chiark
/
gitweb
/
~mdw
/
catacomb
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0c53ac5
)
base/asm-common.h: Add some slightly cheesy Thumb support.
author
Mark Wooding
<mdw@distorted.org.uk>
Thu, 26 May 2016 08:26:09 +0000
(09:26 +0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Fri, 24 Jun 2016 00:17:45 +0000
(
01:17
+0100)
base/asm-common.h
patch
|
blob
|
blame
|
history
diff --git
a/base/asm-common.h
b/base/asm-common.h
index 9c2dfb30a787122f209e7a4ed991559de9bab605..bcfa7352536dec78ab2fa6435199d4ebe60967ca 100644
(file)
--- a/
base/asm-common.h
+++ b/
base/asm-common.h
@@
-162,6
+162,11
@@
_where_am_i.\got :
#if CPUFAM_ARM
#if CPUFAM_ARM
+// ARM/Thumb mode things. Use ARM by default.
+#define ARM .arm; .L$_pcoff = 8
+#define THUMB .thumb; .L$_pcoff = 4
+ ARM
+
// Set the function hooks.
#define FUNC_PREHOOK(_) .balign 4
#define ENDFUNC_HOOK(name) .ltorg
// Set the function hooks.
#define FUNC_PREHOOK(_) .balign 4
#define ENDFUNC_HOOK(name) .ltorg
@@
-190,7
+195,7
@@
_where_am_i.\got :
_LIT
.balign 4
.L$_ldgot$\@:
_LIT
.balign 4
.L$_ldgot$\@:
- .word _GLOBAL_OFFSET_TABLE_ - .L$_ldgot_pc$\@ -
8
+ .word _GLOBAL_OFFSET_TABLE_ - .L$_ldgot_pc$\@ -
.L$_pcoff
_ENDLIT
#endif
.endm
_ENDLIT
#endif
.endm
@@
-215,11
+220,16
@@
_where_am_i.\got :
#if WANT_PIC
ldr\cond \reg, .L$_leaextq$\@
.L$_leaextq_pc$\@:
#if WANT_PIC
ldr\cond \reg, .L$_leaextq$\@
.L$_leaextq_pc$\@:
+ .if .L$_pcoff == 8
ldr\cond \reg, [pc, \reg]
ldr\cond \reg, [pc, \reg]
+ .else
+ add\cond \reg, pc
+ ldr\cond \reg, [\reg]
+ .endif
_LIT
.balign 4
.L$_leaextq$\@:
_LIT
.balign 4
.L$_leaextq$\@:
- .word \addr(GOT_PREL) + (. - .L$_leaextq_pc$\@ -
8
)
+ .word \addr(GOT_PREL) + (. - .L$_leaextq_pc$\@ -
.L$_pcoff
)
_ENDLIT
#else
ldr\cond \reg, =\addr
_ENDLIT
#else
ldr\cond \reg, =\addr