| /* | 
 |  * 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; | 
 | } | 
 |  | 
 | 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__ */ |