OSDN Git Service

* public snapshot of sid simulator
[pf3gnuchains/pf3gnuchains3x.git] / sid / component / cgen-cpu / arm7t / arm-desc.h
1 /* Misc. entries in the arm description file.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 2000 Red Hat, Inc.
6
7 This file is part of the Cygnus Simulators.
8
9
10 */
11
12 #ifndef DESC_ARM_H
13 #define DESC_ARM_H
14
15 namespace arm {
16
17 // Enums.
18
19 /* Enum declaration for .  */
20 typedef enum gr_names {
21   H_GR_PC = 15, H_GR_R0 = 0, H_GR_R1 = 1, H_GR_R2 = 2
22  , H_GR_R3 = 3, H_GR_R4 = 4, H_GR_R5 = 5, H_GR_R6 = 6
23  , H_GR_R7 = 7, H_GR_R8 = 8, H_GR_R9 = 9, H_GR_R10 = 10
24  , H_GR_R11 = 11, H_GR_R12 = 12, H_GR_R13 = 13, H_GR_R14 = 14
25  , H_GR_R15 = 15, H_GR_SP = 13, H_GR_LR = 14
26 } GR_NAMES;
27
28 /* Enum declaration for arm cpu states.  */
29 typedef enum arm_mode {
30   ARM_MODE_USER = 16, ARM_MODE_FIQ = 17, ARM_MODE_IRQ = 18, ARM_MODE_SUPERVISOR = 19
31  , ARM_MODE_ABORT = 23, ARM_MODE_UNDEFINED = 27, ARM_MODE_SYSTEM = 31
32 } ARM_MODE;
33
34 /* Enum declaration for operand 2 shift type.  */
35 typedef enum shift_type {
36   SHIFT_TYPE_LSL = 0, SHIFT_TYPE_ASL = 0, SHIFT_TYPE_LSR = 1, SHIFT_TYPE_ASR = 2
37  , SHIFT_TYPE_ROR = 3
38 } SHIFT_TYPE;
39
40 /* Enum declaration for condition codes.  */
41 typedef enum cond_codes {
42   COND_EQ, COND_NE, COND_CS, COND_CC
43  , COND_MI, COND_PL, COND_VS, COND_VC
44  , COND_HI, COND_LS, COND_GE, COND_LT
45  , COND_GT, COND_LE, COND_AL
46 } COND_CODES;
47
48 /* Enum declaration for Arith/logic opcode enums.  */
49 typedef enum al_opcode {
50   OP_AND, OP_EOR, OP_SUB, OP_RSB
51  , OP_ADD, OP_ADC, OP_SBC, OP_RSC
52  , OP_TST, OP_TEQ, OP_CMP, OP_CMN
53  , OP_ORR, OP_MOV, OP_BIC, OP_MVN
54 } AL_OPCODE;
55
56 /* Enum declaration for PSR transfer destinations.  */
57 typedef enum psr_dests {
58   PSR_CURRENT, PSR_SAVED
59 } PSR_DESTS;
60
61 /* Enum declaration for condition code tests.  */
62 typedef enum cc_tests {
63   CC_EQ, CC_NE, CC_CS, CC_CC
64  , CC_MI, CC_PL, CC_VS, CC_VC
65  , CC_HI, CC_LS, CC_GE, CC_LT
66  , CC_GT, CC_LE
67 } CC_TESTS;
68
69 // Insn attribute indices.
70
71 /* Enum declaration for cgen_insn attrs.  */
72 typedef enum cgen_insn_attr {
73   CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI
74  , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAX
75  , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31
76  , CGEN_INSN_MACH, CGEN_INSN_ISA, CGEN_INSN_R15_OFFSET, CGEN_INSN_END_NBOOLS
77 } CGEN_INSN_ATTR;
78
79 /* Number of non-boolean elements in cgen_insn_attr.  */
80 #define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1)
81
82 // Attributes.
83
84 /* Enum declaration for machine type selection.  */
85 typedef enum mach_attr {
86   MACH_BASE, MACH_ARM7TDMI, MACH_MAX
87 } MACH_ATTR;
88
89 /* Enum declaration for instruction set selection.  */
90 typedef enum isa_attr {
91   ISA_ARM, ISA_THUMB, ISA_MAX
92 } ISA_ATTR;
93
94 // Insn attributes.
95
96 struct arm_insn_attr {
97   unsigned int bools;
98   unsigned int mach;
99   unsigned int isa;
100   int r15_offset;
101   inline unsigned int get_mach_attr () { return mach; }
102   inline unsigned int get_isa_attr () { return isa; }
103   inline int get_r15_offset_attr () { return r15_offset; }
104   inline int get_alias_attr () { return (bools & (1<<CGEN_INSN_ALIAS)) != 0; }
105   inline int get_virtual_attr () { return (bools & (1<<CGEN_INSN_VIRTUAL)) != 0; }
106   inline int get_uncond_cti_attr () { return (bools & (1<<CGEN_INSN_UNCOND_CTI)) != 0; }
107   inline int get_cond_cti_attr () { return (bools & (1<<CGEN_INSN_COND_CTI)) != 0; }
108   inline int get_skip_cti_attr () { return (bools & (1<<CGEN_INSN_SKIP_CTI)) != 0; }
109   inline int get_delay_slot_attr () { return (bools & (1<<CGEN_INSN_DELAY_SLOT)) != 0; }
110   inline int get_relaxable_attr () { return (bools & (1<<CGEN_INSN_RELAXABLE)) != 0; }
111   inline int get_relax_attr () { return (bools & (1<<CGEN_INSN_RELAX)) != 0; }
112   inline int get_no_dis_attr () { return (bools & (1<<CGEN_INSN_NO_DIS)) != 0; }
113   inline int get_pbb_attr () { return (bools & (1<<CGEN_INSN_PBB)) != 0; }
114 };
115
116
117 } // end arm namespace
118
119 #endif /* DESC_ARM_H */