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: Suzuki K Poulose <suzuki@in.ibm.com> [Heiko Carstens: rename s390-dis.h to dis.h] Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
f616d67607
commit
648ae35c54
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* 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__ */
|
|
@ -23,6 +23,7 @@
|
||||||
#include <linux/kdebug.h>
|
#include <linux/kdebug.h>
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
#include <asm/dis.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
#include <asm/mathemu.h>
|
#include <asm/mathemu.h>
|
||||||
|
@ -37,17 +38,6 @@
|
||||||
#define ONELONG "%016lx: "
|
#define ONELONG "%016lx: "
|
||||||
#endif /* CONFIG_64BIT */
|
#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 {
|
enum {
|
||||||
UNUSED, /* Indicates the end of the operand list */
|
UNUSED, /* Indicates the end of the operand list */
|
||||||
R_8, /* GPR starting at position 8 */
|
R_8, /* GPR starting at position 8 */
|
||||||
|
@ -155,18 +145,6 @@ enum {
|
||||||
INSTR_S_00, INSTR_S_RD,
|
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[] =
|
static const struct s390_operand operands[] =
|
||||||
{
|
{
|
||||||
[UNUSED] = { 0, 0, 0 },
|
[UNUSED] = { 0, 0, 0 },
|
||||||
|
@ -1608,11 +1586,6 @@ static unsigned int extract_operand(unsigned char *code,
|
||||||
return val;
|
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)
|
static struct s390_insn *find_insn(unsigned char *code)
|
||||||
{
|
{
|
||||||
unsigned char opfrag = code[1];
|
unsigned char opfrag = code[1];
|
||||||
|
|
Loading…
Reference in New Issue