diff options
Diffstat (limited to 'armmacros.s')
-rw-r--r-- | armmacros.s | 76 |
1 files changed, 76 insertions, 0 deletions
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
|