diff options
Diffstat (limited to 'arch/s390/include/asm/dis.h')
-rw-r--r-- | arch/s390/include/asm/dis.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/arch/s390/include/asm/dis.h b/arch/s390/include/asm/dis.h new file mode 100644 index 000000000000..04a83f5773cd --- /dev/null +++ b/arch/s390/include/asm/dis.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * Disassemble s390 instructions. | ||
3 | * | ||
4 | * Copyright IBM Corp. 2007 | ||
5 | * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), | ||
6 | */ | ||
7 | |||
8 | #ifndef __ASM_S390_DIS_H__ | ||
9 | #define __ASM_S390_DIS_H__ | ||
10 | |||
11 | /* Type of operand */ | ||
12 | #define OPERAND_GPR 0x1 /* Operand printed as %rx */ | ||
13 | #define OPERAND_FPR 0x2 /* Operand printed as %fx */ | ||
14 | #define OPERAND_AR 0x4 /* Operand printed as %ax */ | ||
15 | #define OPERAND_CR 0x8 /* Operand printed as %cx */ | ||
16 | #define OPERAND_DISP 0x10 /* Operand printed as displacement */ | ||
17 | #define OPERAND_BASE 0x20 /* Operand printed as base register */ | ||
18 | #define OPERAND_INDEX 0x40 /* Operand printed as index register */ | ||
19 | #define OPERAND_PCREL 0x80 /* Operand printed as pc-relative symbol */ | ||
20 | #define OPERAND_SIGNED 0x100 /* Operand printed as signed value */ | ||
21 | #define OPERAND_LENGTH 0x200 /* Operand printed as length (+1) */ | ||
22 | |||
23 | |||
24 | struct s390_operand { | ||
25 | int bits; /* The number of bits in the operand. */ | ||
26 | int shift; /* The number of bits to shift. */ | ||
27 | int flags; /* One bit syntax flags. */ | ||
28 | }; | ||
29 | |||
30 | struct s390_insn { | ||
31 | const char name[5]; | ||
32 | unsigned char opfrag; | ||
33 | unsigned char format; | ||
34 | }; | ||
35 | |||
36 | |||
37 | static inline int insn_length(unsigned char code) | ||
38 | { | ||
39 | return ((((int) code + 64) >> 7) + 1) << 1; | ||
40 | } | ||
41 | |||
42 | void show_code(struct pt_regs *regs); | ||
43 | void print_fn_code(unsigned char *code, unsigned long len); | ||
44 | int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len); | ||
45 | struct s390_insn *find_insn(unsigned char *code); | ||
46 | |||
47 | static inline int is_known_insn(unsigned char *code) | ||
48 | { | ||
49 | return !!find_insn(code); | ||
50 | } | ||
51 | |||
52 | #endif /* __ASM_S390_DIS_H__ */ | ||