1 /* ------------------------------------------------------------------ */
2 /* WARNING: relative order of tokens is important. */
18 DEF_ASM(r12
) /* ip[c] */
25 DEF_ASM(fp
) /* alias for r11 */
26 DEF_ASM(ip
) /* alias for r12 */
27 DEF_ASM(sp
) /* alias for r13 */
28 DEF_ASM(lr
) /* alias for r14 */
29 DEF_ASM(pc
) /* alias for r15 */
31 /* data processing directives */
35 #define ARM_INSTRUCTION_GROUP(tok) ((((tok) - TOK_ASM_nopeq) & 0xFFFFFFF0) + TOK_ASM_nopeq)
37 /* Note: condition code is 4 bits */
38 #define DEF_ASM_CONDED(x) \
39 DEF(TOK_ASM_ ## x ## eq, #x "eq") \
40 DEF(TOK_ASM_ ## x ## ne, #x "ne") \
41 DEF(TOK_ASM_ ## x ## cs, #x "cs") \
42 DEF(TOK_ASM_ ## x ## cc, #x "cc") \
43 DEF(TOK_ASM_ ## x ## mi, #x "mi") \
44 DEF(TOK_ASM_ ## x ## pl, #x "pl") \
45 DEF(TOK_ASM_ ## x ## vs, #x "vs") \
46 DEF(TOK_ASM_ ## x ## vc, #x "vc") \
47 DEF(TOK_ASM_ ## x ## hi, #x "hi") \
48 DEF(TOK_ASM_ ## x ## ls, #x "ls") \
49 DEF(TOK_ASM_ ## x ## ge, #x "ge") \
50 DEF(TOK_ASM_ ## x ## lt, #x "lt") \
51 DEF(TOK_ASM_ ## x ## gt, #x "gt") \
52 DEF(TOK_ASM_ ## x ## le, #x "le") \
53 DEF(TOK_ASM_ ## x, #x) \
54 DEF(TOK_ASM_ ## x ## rsvd, #x "rsvd")
56 /* Note: add new tokens after nop (MUST always use DEF_ASM_CONDED) */
82 DEF_ASM_CONDED(smulls
)
84 DEF_ASM_CONDED(umulls
)
86 DEF_ASM_CONDED(smlals
)
88 DEF_ASM_CONDED(umlals
)
97 DEF_ASM_CONDED(ldrexb
)
99 DEF_ASM_CONDED(strexb
)
101 DEF_ASM_CONDED(ldrsh
)
102 DEF_ASM_CONDED(ldrsb
)
105 DEF_ASM_CONDED(stmda
)
106 DEF_ASM_CONDED(ldmda
)
109 DEF_ASM_CONDED(stmia
)
110 DEF_ASM_CONDED(ldmia
)
111 DEF_ASM_CONDED(stmdb
)
112 DEF_ASM_CONDED(ldmdb
)
113 DEF_ASM_CONDED(stmib
)
114 DEF_ASM_CONDED(ldmib
)
116 /* instruction macros */
128 /* data processing instructions; order is important */
147 DEF_ASM_CONDED(tsts
) // necessary here--but not useful to the user
149 DEF_ASM_CONDED(teqs
) // necessary here--but not useful to the user
151 DEF_ASM_CONDED(cmps
) // necessary here--but not useful to the user
153 DEF_ASM_CONDED(cmns
) // necessary here--but not useful to the user