1/* 2 * =========================================================================== 3 * CPU-version-specific defines 4 * =========================================================================== 5 */ 6 7/* 8 * Macro for "LDR PC,xxx", which is not allowed pre-ARMv5. Essentially a 9 * one-way branch. 10 * 11 * May modify IP. Does not modify LR. 12 */ 13.macro LDR_PC source 14 ldr pc, \source 15.endm 16 17/* 18 * Macro for "MOV LR,PC / LDR PC,xxx", which is not allowed pre-ARMv5. 19 * Jump to subroutine. 20 * 21 * May modify IP and LR. 22 */ 23.macro LDR_PC_LR source 24 mov lr, pc 25 ldr pc, \source 26.endm 27 28/* 29 * Macro for "LDMFD SP!, {...regs...,PC}". 30 * 31 * May modify IP and LR. 32 */ 33.macro LDMFD_PC regs 34 ldmfd sp!, {\regs,pc} 35.endm 36 37/* 38 * Macro for data memory barrier; not meaningful pre-ARMv6K. 39 */ 40.macro SMP_DMB 41.endm 42