diff options
author | YamaArashi <shadow962@live.com> | 2016-04-29 11:23:07 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-04-29 11:23:07 -0700 |
commit | b1cbd27e7559a8eece0079ecb76918a11aeb6e9d (patch) | |
tree | d8c168af313bac2ada39929862be0e641492995a /libgcc | |
parent | 8d0725156ab8f173bebdefd4db6deb84b85c1918 (diff) |
remove caller super-interworking
Diffstat (limited to 'libgcc')
-rwxr-xr-x | libgcc/lib1thumb.asm | 80 |
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 */ |