~ubuntu-branches/debian/experimental/linux-tools/experimental

« back to all changes in this revision

Viewing changes to arch/s390/include/asm/dis.h

  • Committer: Package Import Robot
  • Author(s): Ben Hutchings
  • Date: 2014-02-02 16:57:49 UTC
  • mfrom: (1.1.10) (0.1.21 sid)
  • Revision ID: package-import@ubuntu.com-20140202165749-tw94o9t1t0a8txk6
Tags: 3.13-1~exp2
Merge changes from sid up to 3.12.6-3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
24
struct 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
 
 
30
struct s390_insn {
 
31
        const char name[5];
 
32
        unsigned char opfrag;
 
33
        unsigned char format;
 
34
};
 
35
 
 
36
 
 
37
static inline int insn_length(unsigned char code)
 
38
{
 
39
        return ((((int) code + 64) >> 7) + 1) << 1;
 
40
}
 
41
 
 
42
void show_code(struct pt_regs *regs);
 
43
void print_fn_code(unsigned char *code, unsigned long len);
 
44
int insn_to_mnemonic(unsigned char *instruction, char *buf, unsigned int len);
 
45
struct s390_insn *find_insn(unsigned char *code);
 
46
 
 
47
static inline int is_known_insn(unsigned char *code)
 
48
{
 
49
        return !!find_insn(code);
 
50
}
 
51
 
 
52
#endif /* __ASM_S390_DIS_H__ */