summaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-04-29 11:23:07 -0700
committerYamaArashi <shadow962@live.com>2016-04-29 11:23:07 -0700
commitb1cbd27e7559a8eece0079ecb76918a11aeb6e9d (patch)
treed8c168af313bac2ada39929862be0e641492995a /libgcc
parent8d0725156ab8f173bebdefd4db6deb84b85c1918 (diff)
remove caller super-interworking
Diffstat (limited to 'libgcc')
-rwxr-xr-xlibgcc/lib1thumb.asm80
1 files changed, 0 insertions, 80 deletions
diff --git a/libgcc/lib1thumb.asm b/libgcc/lib1thumb.asm
index e0ff746..da80ebf 100755
--- a/libgcc/lib1thumb.asm
+++ b/libgcc/lib1thumb.asm
@@ -654,83 +654,3 @@ SYM (_call_via_\register):
call_via lr
#endif /* L_call_via_rX */
-
-#ifdef L_interwork_call_via_rX
-
-/* These labels & instructions are used by the Arm/Thumb interworking code,
- when the target address is in an unknown instruction set. The address
- of function to be called is loaded into a register and then one of these
- labels is called via a BL instruction. This puts the return address
- into the link register with the bottom bit set, and the code here
- switches to the correct mode before executing the function. Unfortunately
- the target code cannot be relied upon to return via a BX instruction, so
- instead we have to store the resturn address on the stack and allow the
- called function to return here instead. Upon return we recover the real
- return address and use a BX to get back to Thumb mode. */
-
- .text
- .align 0
-
- .code 32
- .globl _arm_return
-_arm_return:
- ldmia r13!, {r12}
- bx r12
-
-.macro interwork register
- .code 16
-
- .globl SYM (_interwork_call_via_\register)
- TYPE (_interwork_call_via_\register)
- .thumb_func
-SYM (_interwork_call_via_\register):
- bx pc
- nop
-
- .code 32
- .globl .Lchange_\register
-.Lchange_\register:
- tst \register, #1
- stmeqdb r13!, {lr}
- adreq lr, _arm_return
- bx \register
-
- SIZE (_interwork_call_via_\register)
-.endm
-
- interwork r0
- interwork r1
- interwork r2
- interwork r3
- interwork r4
- interwork r5
- interwork r6
- interwork r7
- interwork r8
- interwork r9
- interwork sl
- interwork fp
- interwork ip
- interwork sp
-
- /* The lr case has to be handled a little differently...*/
- .code 16
- .globl SYM (_interwork_call_via_lr)
- TYPE (_interwork_call_via_lr)
- .thumb_func
-SYM (_interwork_call_via_lr):
- bx pc
- nop
-
- .code 32
- .globl .Lchange_lr
-.Lchange_lr:
- tst lr, #1
- stmeqdb r13!, {lr}
- mov ip, lr
- adreq lr, _arm_return
- bx ip
-
- SIZE (_interwork_call_via_lr)
-
-#endif /* L_interwork_call_via_rX */