123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * 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_VR 0x10 /* Operand printed as %vx */
- #define OPERAND_DISP 0x20 /* Operand printed as displacement */
- #define OPERAND_BASE 0x40 /* Operand printed as base register */
- #define OPERAND_INDEX 0x80 /* Operand printed as index register */
- #define OPERAND_PCREL 0x100 /* Operand printed as pc-relative symbol */
- #define OPERAND_SIGNED 0x200 /* Operand printed as signed value */
- #define OPERAND_LENGTH 0x400 /* 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;
- }
- void show_code(struct pt_regs *regs);
- void print_fn_code(unsigned char *code, unsigned long len);
- int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
- struct s390_insn *find_insn(unsigned char *code);
- static inline int is_known_insn(unsigned char *code)
- {
- return !!find_insn(code);
- }
- #endif /* __ASM_S390_DIS_H__ */
|