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