Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 648ae35c authored by Suzuki K. Poulose's avatar Suzuki K. Poulose Committed by Martin Schwidefsky
Browse files

s390/dis: move common definitions to a header file



The patch moves some of the definitions to a
header file. No functional changes involved.

I have retained the Copyright Statement from the
original file.

Signed-off-by: default avatarSuzuki K Poulose <suzuki@in.ibm.com>
[Heiko Carstens: rename s390-dis.h to dis.h]
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent f616d676
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
/*
 * Disassemble s390 instructions.
 *
 * Copyright IBM Corp. 2007
 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
 */

#ifndef __ASM_S390_DIS_H__
#define __ASM_S390_DIS_H__

/* Type of operand */
#define OPERAND_GPR	0x1	/* Operand printed as %rx */
#define OPERAND_FPR	0x2	/* Operand printed as %fx */
#define OPERAND_AR	0x4	/* Operand printed as %ax */
#define OPERAND_CR	0x8	/* Operand printed as %cx */
#define OPERAND_DISP	0x10	/* Operand printed as displacement */
#define OPERAND_BASE	0x20	/* Operand printed as base register */
#define OPERAND_INDEX	0x40	/* Operand printed as index register */
#define OPERAND_PCREL	0x80	/* Operand printed as pc-relative symbol */
#define OPERAND_SIGNED	0x100	/* Operand printed as signed value */
#define OPERAND_LENGTH	0x200	/* Operand printed as length (+1) */


struct s390_operand {
	int bits;		/* The number of bits in the operand. */
	int shift;		/* The number of bits to shift. */
	int flags;		/* One bit syntax flags. */
};

struct s390_insn {
	const char name[5];
	unsigned char opfrag;
	unsigned char format;
};


static inline int insn_length(unsigned char code)
{
	return ((((int) code + 64) >> 7) + 1) << 1;
}

#endif /* __ASM_S390_DIS_H__ */
+1 −28
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/kdebug.h>

#include <asm/uaccess.h>
#include <asm/dis.h>
#include <asm/io.h>
#include <linux/atomic.h>
#include <asm/mathemu.h>
@@ -37,17 +38,6 @@
#define ONELONG "%016lx: "
#endif /* CONFIG_64BIT */

#define OPERAND_GPR	0x1	/* Operand printed as %rx */
#define OPERAND_FPR	0x2	/* Operand printed as %fx */
#define OPERAND_AR	0x4	/* Operand printed as %ax */
#define OPERAND_CR	0x8	/* Operand printed as %cx */
#define OPERAND_DISP	0x10	/* Operand printed as displacement */
#define OPERAND_BASE	0x20	/* Operand printed as base register */
#define OPERAND_INDEX	0x40	/* Operand printed as index register */
#define OPERAND_PCREL	0x80	/* Operand printed as pc-relative symbol */
#define OPERAND_SIGNED	0x100	/* Operand printed as signed value */
#define OPERAND_LENGTH	0x200	/* Operand printed as length (+1) */

enum {
	UNUSED,	/* Indicates the end of the operand list */
	R_8,	/* GPR starting at position 8 */
@@ -155,18 +145,6 @@ enum {
	INSTR_S_00, INSTR_S_RD,
};

struct s390_operand {
	int bits;		/* The number of bits in the operand. */
	int shift;		/* The number of bits to shift. */
	int flags;		/* One bit syntax flags. */
};

struct s390_insn {
	const char name[5];
	unsigned char opfrag;
	unsigned char format;
};

static const struct s390_operand operands[] =
{
	[UNUSED]  = { 0, 0, 0 },
@@ -1608,11 +1586,6 @@ static unsigned int extract_operand(unsigned char *code,
	return val;
}

static inline int insn_length(unsigned char code)
{
	return ((((int) code + 64) >> 7) + 1) << 1;
}

static struct s390_insn *find_insn(unsigned char *code)
{
	unsigned char opfrag = code[1];