Go to the documentation of this file.
17 #ifndef OPENOCD_TARGET_ARM_OPCODES_H
18 #define OPENOCD_TARGET_ARM_OPCODES_H
33 #define ARMV4_5_STMIA(rn, list, s, w) \
34 (0xe8800000 | ((s) << 22) | ((w) << 21) | ((rn) << 16) | (list))
42 #define ARMV4_5_LDMIA(rn, list, s, w) \
43 (0xe8900000 | ((s) << 22) | ((w) << 21) | ((rn) << 16) | (list))
46 #define ARMV4_5_NOP (0xe1a08008)
52 #define ARMV4_5_MRS(rn, r) (0xe10f0000 | ((r) << 22) | ((rn) << 12))
58 #define ARMV4_5_STR(rd, rn) (0xe5800000 | ((rd) << 12) | ((rn) << 16))
64 #define ARMV4_5_LDR(rd, rn) (0xe5900000 | ((rd) << 12) | ((rn) << 16))
72 #define ARMV4_5_MSR_GP(rm, field, r) \
73 (0xe120f000 | (rm) | ((field) << 16) | ((r) << 22))
74 #define ARMV4_5_MSR_IM(im, rotate, field, r) \
75 (0xe320f000 | (im) | ((rotate) << 8) | ((field) << 16) | ((r) << 22))
81 #define ARMV4_5_LDRW_IP(rd, rn) (0xe4900004 | ((rd) << 12) | ((rn) << 16))
87 #define ARMV4_5_LDRH_IP(rd, rn) (0xe0d000b2 | ((rd) << 12) | ((rn) << 16))
93 #define ARMV4_5_LDRB_IP(rd, rn) (0xe4d00001 | ((rd) << 12) | ((rn) << 16))
99 #define ARMV4_5_STRW_IP(rd, rn) (0xe4800004 | ((rd) << 12) | ((rn) << 16))
105 #define ARMV4_5_STRH_IP(rd, rn) (0xe0c000b2 | ((rd) << 12) | ((rn) << 16))
111 #define ARMV4_5_STRB_IP(rd, rn) (0xe4c00001 | ((rd) << 12) | ((rn) << 16))
117 #define ARMV4_5_B(im, l) (0xea000000 | (im) | ((l) << 24))
122 #define ARMV4_5_BX(rm) (0xe12fff10 | (rm))
134 #define ARMV4_5_VMOV(op, rt2, rt, m, vm) \
135 (0xec400b10 | ((op) << 20) | ((rt2) << 16) | \
136 ((rt) << 12) | ((m) << 5) | (vm))
141 #define ARMV4_5_VMRS(rt) (0xeef10a10 | ((rt) << 12))
146 #define ARMV4_5_VMSR(rt) (0xeee10a10 | ((rt) << 12))
159 #define ARMV4_5_STC(p, u, d, w, cp, crd, rn, imm) \
160 (0xec000000 | ((p) << 24) | ((u) << 23) | ((d) << 22) | \
161 ((w) << 21) | ((rn) << 16) | ((crd) << 12) | ((cp) << 8) | ((imm)>>2))
174 #define ARMV4_5_LDC(p, u, d, w, cp, crd, rn, imm) \
175 (0xec100000 | ((p) << 24) | ((u) << 23) | ((d) << 22) | \
176 ((w) << 21) | ((rn) << 16) | ((crd) << 12) | ((cp) << 8) | ((imm) >> 2))
186 #define ARMV4_5_MRC(cp, op1, rd, crn, crm, op2) \
187 (0xee100010 | (crm) | ((op2) << 5) | ((cp) << 8) \
188 | ((rd) << 12) | ((crn) << 16) | ((op1) << 21))
197 #define ARMV5_T_MRRC(cp, op, rt, rt2, crm) \
198 (0xec500000 | (crm) | ((op) << 4) | ((cp) << 8) \
199 | ((rt) << 12) | ((rt2) << 16))
209 #define ARMV4_5_MCR(cp, op1, rd, crn, crm, op2) \
210 (0xee000010 | (crm) | ((op2) << 5) | ((cp) << 8) \
211 | ((rd) << 12) | ((crn) << 16) | ((op1) << 21))
220 #define ARMV5_T_MCRR(cp, op, rt, rt2, crm) \
221 (0xec400000 | (crm) | ((op) << 4) | ((cp) << 8) \
222 | ((rt) << 12) | ((rt2) << 16))
227 #define ARMV5_BKPT(im) (0xe1200070 | ((im & 0xfff0) << 4) | (im & 0xf))
245 #define ARMV4_5_T_STR(rd, rn) \
246 ((0x6000 | (rd) | ((rn) << 3)) | \
247 ((0x6000 | (rd) | ((rn) << 3)) << 16))
253 #define ARMV4_5_T_LDR(rd, rn) \
254 ((0x6800 | ((rn) << 3) | (rd)) \
255 | ((0x6800 | ((rn) << 3) | (rd)) << 16))
261 #define ARMV4_5_T_LDMIA(rn, list) \
262 ((0xc800 | ((rn) << 8) | (list)) \
263 | ((0xc800 | ((rn) << 8) | (list)) << 16))
268 #define ARMV4_5_T_LDR_PCREL(rd) \
269 ((0x4800 | ((rd) << 8)) \
270 | ((0x4800 | ((rd) << 8)) << 16))
276 #define ARMV4_5_T_MOV(rd, rm) \
277 ((0x4600 | ((rd) & 0x7) | (((rd) & 0x8) << 4) | \
278 (((rm) & 0x7) << 3) | (((rm) & 0x8) << 3)) \
279 | ((0x4600 | ((rd) & 0x7) | (((rd) & 0x8) << 4) | \
280 (((rm) & 0x7) << 3) | (((rm) & 0x8) << 3)) << 16))
286 #define ARMV4_5_T_NOP (0x46c0 | (0x46c0 << 16))
292 #define ARMV4_5_T_MOV_IM(rd, im) \
293 ((0x2000 | ((rd) << 8) | (im)) \
294 | ((0x2000 | ((rd) << 8) | (im)) << 16))
299 #define ARMV4_5_T_BX(rm) \
300 ((0x4700 | ((rm) << 3)) \
301 | ((0x4700 | ((rm) << 3)) << 16))
306 #define ARMV4_5_T_B(imm) \
308 | ((0xe000 | (imm)) << 16))
313 #define ARMV5_T_BKPT(im) \
315 | ((0xbe00 | (im)) << 16))
322 #define ARM_T2_MRS(rd, sysm) \
323 ((0xF3EF) | ((0x8000 | (rd << 8) | sysm) << 16))
330 #define ARM_T2_MSR(sysm, rn) \
331 ((0xF380 | (rn << 8)) | ((0x8800 | sysm) << 16))
341 #define ARM_T2_CPSID(_if) \
342 ((0xB660 | (1 << 8) | ((_if)&0x3)) \
343 | ((0xB660 | (1 << 8) | ((_if)&0x3)) << 16))
344 #define ARM_T2_CPSIE(_if) \
345 ((0xB660 | (0 << 8) | ((_if)&0x3)) \
346 | ((0xB660 | (0 << 8) | ((_if)&0x3)) << 16))