Merge tag 'pm+acpi-4.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux/fpc-iii.git] / arch / s390 / include / asm / dis.h
blob60323c21938bb5d97407e9f0cb35c6fcdd335597
1 /*
2 * Disassemble s390 instructions.
4 * Copyright IBM Corp. 2007
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
6 */
8 #ifndef __ASM_S390_DIS_H__
9 #define __ASM_S390_DIS_H__
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_VR 0x10 /* Operand printed as %vx */
17 #define OPERAND_DISP 0x20 /* Operand printed as displacement */
18 #define OPERAND_BASE 0x40 /* Operand printed as base register */
19 #define OPERAND_INDEX 0x80 /* Operand printed as index register */
20 #define OPERAND_PCREL 0x100 /* Operand printed as pc-relative symbol */
21 #define OPERAND_SIGNED 0x200 /* Operand printed as signed value */
22 #define OPERAND_LENGTH 0x400 /* Operand printed as length (+1) */
25 struct s390_operand {
26 int bits; /* The number of bits in the operand. */
27 int shift; /* The number of bits to shift. */
28 int flags; /* One bit syntax flags. */
31 struct s390_insn {
32 const char name[5];
33 unsigned char opfrag;
34 unsigned char format;
38 static inline int insn_length(unsigned char code)
40 return ((((int) code + 64) >> 7) + 1) << 1;
43 void show_code(struct pt_regs *regs);
44 void print_fn_code(unsigned char *code, unsigned long len);
45 int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
46 struct s390_insn *find_insn(unsigned char *code);
48 static inline int is_known_insn(unsigned char *code)
50 return !!find_insn(code);
53 #endif /* __ASM_S390_DIS_H__ */