From 90a02f720ece4c6d3163246ce17718d3d4d4b5c8 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Thu, 22 Oct 2015 13:08:20 +0000 Subject: add position independent code option (PIC) for ARM --- armmacros.s | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 armmacros.s (limited to 'armmacros.s') diff --git a/armmacros.s b/armmacros.s new file mode 100644 index 0000000..609d4b5 --- /dev/null +++ b/armmacros.s @@ -0,0 +1,76 @@ + +.ifdef PIC + +.macro lao r a i + ldr \r,\a\()__o\i +.endm + +.macro otoa r a i +\a\()__u\i: + add \r,\r,pc +.endm + +.macro ldo rd ra a i +\a\()__u\i: + ldr \rd,[pc,\ra] +.endm + +.macro ldosb rd ra a i +\a\()__u\i: + ldrsb \rd,[pc,\ra] +.endm + +.macro sto rd ra a i +\a\()__u\i: + str \rd,[pc,\ra] +.endm + +.macro stob rd ra a i +\a\()__u\i: + strb \rd,[pc,\ra] +.endm + +.macro lto a i +\a\()__o\i: + .long \a\()-(\a\()__u\i\()+8) +.endm + +.macro laol r a l i + ldr \r,\l\()__o\i +.endm + +.macro ltol a l i +\l\()__o\i: + .long \a\()-(\l\()__u\i\()+8) +.endm + +.else + +.macro lao r a i + ldr \r,=\a +.endm + +.macro otoa r a i +.endm + +.macro ldo rd ra a i + ldr \rd,[\ra] +.endm + +.macro ldosb rd ra a i + ldrsb \rd,[\ra] +.endm + +.macro sto rd ra a i + str \rd,[\ra] +.endm + +.macro stob rd ra a i + strb \rd,[\ra] +.endm + +.macro laol r a l i + ldr \r,=\a +.endm + +.endif -- cgit v1.2.3