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