aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/dis.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-07 18:24:38 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-07 18:24:38 -0500
commit280c84d1c1726be7ada045735858acdc8cfdd65a (patch)
treeb9afa3fb97b08272b6952d5c8d1fe31f6a8092fa /arch/s390/include/asm/dis.h
parent8efdf2b759409f85953b84d52a14ea4d39c80474 (diff)
parentde9587a2f54d2d0063f0dbc775328129b9daaaa2 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Martin Schwidefsky: "The bulk of the patches for the 3.13 merge window. Heiko spent quite a bit of work to improve the code generation for the kernel. That includes the exploitation of the interlocked-access facility for the atomics and bitops implementation and the improvement for the -march and -mtune compiler settings. Another important change is the removal of the user_mode=home option, user processes now always run in primary space. The storage keys are not initialized at system startup any more, with that the storage key removal work is complete. For the PCI support the hibernation hooks have been implemented. And as usual cleanup and fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (62 commits) s390/scm_blk: fix endless loop for requests != REQ_TYPE_FS s390/mm,tlb: correct tlb flush on page table upgrade s390/mm: page_table_realloc returns failure s390: allow to set gcc -mtune flag s390/percpu: remove this_cpu_xor() implementation s390/vtime: correct idle time calculation s390/time: fix get_tod_clock_ext inline assembly tty/hvc_iucv: remove redundant NULL check s390/dasd: Write to profile data area only if it is available s390: convert use of typedef ctl_table to struct ctl_table s390/pci: cleanup function information block s390/pci: remove CONFIG_PCI_DEBUG dependancy s390/pci: message cleanup Update default configuration s390: add a couple of useful defconfigs s390/percpu: make use of interlocked-access facility 1 instructions s390/percpu: use generic percpu ops for CONFIG_32BIT s390/compat: make psw32_user_bits a constant value again s390: fix handling of runtime instrumentation psw bit s390: fix save and restore of the floating-point-control register ...
Diffstat (limited to 'arch/s390/include/asm/dis.h')
-rw-r--r--arch/s390/include/asm/dis.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/arch/s390/include/asm/dis.h b/arch/s390/include/asm/dis.h
new file mode 100644
index 000000000000..04a83f5773cd
--- /dev/null
+++ b/arch/s390/include/asm/dis.h
@@ -0,0 +1,52 @@
1/*
2 * Disassemble s390 instructions.
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
6 */
7
8#ifndef __ASM_S390_DIS_H__
9#define __ASM_S390_DIS_H__
10
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_DISP 0x10 /* Operand printed as displacement */
17#define OPERAND_BASE 0x20 /* Operand printed as base register */
18#define OPERAND_INDEX 0x40 /* Operand printed as index register */
19#define OPERAND_PCREL 0x80 /* Operand printed as pc-relative symbol */
20#define OPERAND_SIGNED 0x100 /* Operand printed as signed value */
21#define OPERAND_LENGTH 0x200 /* Operand printed as length (+1) */
22
23
24struct s390_operand {
25 int bits; /* The number of bits in the operand. */
26 int shift; /* The number of bits to shift. */
27 int flags; /* One bit syntax flags. */
28};
29
30struct s390_insn {
31 const char name[5];
32 unsigned char opfrag;
33 unsigned char format;
34};
35
36
37static inline int insn_length(unsigned char code)
38{
39 return ((((int) code + 64) >> 7) + 1) << 1;
40}
41
42void show_code(struct pt_regs *regs);
43void print_fn_code(unsigned char *code, unsigned long len);
44int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
45struct s390_insn *find_insn(unsigned char *code);
46
47static inline int is_known_insn(unsigned char *code)
48{
49 return !!find_insn(code);
50}
51
52#endif /* __ASM_S390_DIS_H__ */