1
2
3
4
5
6
7
8#ifndef __ASM_S390_DIS_H__
9#define __ASM_S390_DIS_H__
10
11
12#define OPERAND_GPR 0x1
13#define OPERAND_FPR 0x2
14#define OPERAND_AR 0x4
15#define OPERAND_CR 0x8
16#define OPERAND_VR 0x10
17#define OPERAND_DISP 0x20
18#define OPERAND_BASE 0x40
19#define OPERAND_INDEX 0x80
20#define OPERAND_PCREL 0x100
21#define OPERAND_SIGNED 0x200
22#define OPERAND_LENGTH 0x400
23
24
25struct s390_operand {
26 int bits;
27 int shift;
28 int flags;
29};
30
31struct s390_insn {
32 const char name[5];
33 unsigned char opfrag;
34 unsigned char format;
35};
36
37
38static inline int insn_length(unsigned char code)
39{
40 return ((((int) code + 64) >> 7) + 1) << 1;
41}
42
43void show_code(struct pt_regs *regs);
44void print_fn_code(unsigned char *code, unsigned long len);
45int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
46struct s390_insn *find_insn(unsigned char *code);
47
48static inline int is_known_insn(unsigned char *code)
49{
50 return !!find_insn(code);
51}
52
53#endif
54