diff options
Diffstat (limited to 'sysdeps/powerpc/dl-machine.h')
-rw-r--r-- | sysdeps/powerpc/dl-machine.h | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/sysdeps/powerpc/dl-machine.h b/sysdeps/powerpc/dl-machine.h index 961aafb..80db704 100644 --- a/sysdeps/powerpc/dl-machine.h +++ b/sysdeps/powerpc/dl-machine.h @@ -102,101 +102,101 @@ elf_machine_load_address (void) /* This code is used in dl-runtime.c to call the `fixup' function and then redirect to the address it returns. It is called from code built in the PLT by elf_machine_runtime_setup. */ -#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ - .section \".text\" - .align 2 - .globl _dl_runtime_resolve - .type _dl_runtime_resolve,@function -_dl_runtime_resolve: - # We need to save the registers used to pass parameters, and register 0, - # which is used by _mcount; the registers are saved in a stack frame. - stwu 1,-64(1) - stw 0,12(1) - stw 3,16(1) - stw 4,20(1) - # The code that calls this has put parameters for `fixup' in r12 and r11. - mr 3,12 - stw 5,24(1) - mr 4,11 - stw 6,28(1) - mflr 0 - # We also need to save some of the condition register fields. - stw 7,32(1) - stw 0,48(1) - stw 8,36(1) - mfcr 0 - stw 9,40(1) - stw 10,44(1) - stw 0,8(1) - bl fixup@local - # 'fixup' returns the address we want to branch to. - mtctr 3 - # Put the registers back... - lwz 0,48(1) - lwz 10,44(1) - lwz 9,40(1) - mtlr 0 - lwz 8,36(1) - lwz 0,8(1) - lwz 7,32(1) - lwz 6,28(1) - mtcrf 0xFF,0 - lwz 5,24(1) - lwz 4,20(1) - lwz 3,16(1) - lwz 0,12(1) - # ...unwind the stack frame, and jump to the PLT entry we updated. - addi 1,1,64 - bctr - .size _dl_runtime_resolve,.-_dl_runtime_resolve - - .align 2 - .globl _dl_prof_resolve - .type _dl_prof_resolve,@function -_dl_prof_resolve: - # We need to save the registers used to pass parameters, and register 0, - # which is used by _mcount; the registers are saved in a stack frame. - stwu 1,-64(1) - stw 0,12(1) - stw 3,16(1) - stw 4,20(1) - # The code that calls this has put parameters for `fixup' in r12 and r11. - mr 3,12 - stw 5,24(1) - mr 4,11 - stw 6,28(1) - mflr 5 - # We also need to save some of the condition register fields. - stw 7,32(1) - stw 5,48(1) - stw 8,36(1) - mfcr 0 - stw 9,40(1) - stw 10,44(1) - stw 0,8(1) - bl profile_fixup@local - # 'fixup' returns the address we want to branch to. - mtctr 3 - # Put the registers back... - lwz 0,48(1) - lwz 10,44(1) - lwz 9,40(1) - mtlr 0 - lwz 8,36(1) - lwz 0,8(1) - lwz 7,32(1) - lwz 6,28(1) - mtcrf 0xFF,0 - lwz 5,24(1) - lwz 4,20(1) - lwz 3,16(1) - lwz 0,12(1) - # ...unwind the stack frame, and jump to the PLT entry we updated. - addi 1,1,64 - bctr - .size _dl_prof_resolve,.-_dl_prof_resolve - # Undo '.section text'. - .previous +#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\ + .section \".text\" \n\ + .align 2 \n\ + .globl _dl_runtime_resolve \n\ + .type _dl_runtime_resolve,@function \n\ +_dl_runtime_resolve: \n\ + # We need to save the registers used to pass parameters, and register 0,\n\ + # which is used by _mcount; the registers are saved in a stack frame.\n\ + stwu 1,-64(1) \n\ + stw 0,12(1) \n\ + stw 3,16(1) \n\ + stw 4,20(1) \n\ + # The code that calls this has put parameters for `fixup' in r12 and r11.\n\ + mr 3,12 \n\ + stw 5,24(1) \n\ + mr 4,11 \n\ + stw 6,28(1) \n\ + mflr 0 \n\ + # We also need to save some of the condition register fields.\n\ + stw 7,32(1) \n\ + stw 0,48(1) \n\ + stw 8,36(1) \n\ + mfcr 0 \n\ + stw 9,40(1) \n\ + stw 10,44(1) \n\ + stw 0,8(1) \n\ + bl fixup@local \n\ + # 'fixup' returns the address we want to branch to.\n\ + mtctr 3 \n\ + # Put the registers back...\n\ + lwz 0,48(1) \n\ + lwz 10,44(1) \n\ + lwz 9,40(1) \n\ + mtlr 0 \n\ + lwz 8,36(1) \n\ + lwz 0,8(1) \n\ + lwz 7,32(1) \n\ + lwz 6,28(1) \n\ + mtcrf 0xFF,0 \n\ + lwz 5,24(1) \n\ + lwz 4,20(1) \n\ + lwz 3,16(1) \n\ + lwz 0,12(1) \n\ + # ...unwind the stack frame, and jump to the PLT entry we updated.\n\ + addi 1,1,64 \n\ + bctr \n\ + .size _dl_runtime_resolve,.-_dl_runtime_resolve \n\ + \n\ + .align 2 \n\ + .globl _dl_prof_resolve \n\ + .type _dl_prof_resolve,@function \n\ +_dl_prof_resolve: \n\ + # We need to save the registers used to pass parameters, and register 0,\n\ + # which is used by _mcount; the registers are saved in a stack frame.\n\ + stwu 1,-64(1) \n\ + stw 0,12(1) \n\ + stw 3,16(1) \n\ + stw 4,20(1) \n\ + # The code that calls this has put parameters for `fixup' in r12 and r11.\n\ + mr 3,12 \n\ + stw 5,24(1) \n\ + mr 4,11 \n\ + stw 6,28(1) \n\ + mflr 5 \n\ + # We also need to save some of the condition register fields.\n\ + stw 7,32(1) \n\ + stw 5,48(1) \n\ + stw 8,36(1) \n\ + mfcr 0 \n\ + stw 9,40(1) \n\ + stw 10,44(1) \n\ + stw 0,8(1) \n\ + bl profile_fixup@local \n\ + # 'fixup' returns the address we want to branch to.\n\ + mtctr 3 \n\ + # Put the registers back...\n\ + lwz 0,48(1) \n\ + lwz 10,44(1) \n\ + lwz 9,40(1) \n\ + mtlr 0 \n\ + lwz 8,36(1) \n\ + lwz 0,8(1) \n\ + lwz 7,32(1) \n\ + lwz 6,28(1) \n\ + mtcrf 0xFF,0 \n\ + lwz 5,24(1) \n\ + lwz 4,20(1) \n\ + lwz 3,16(1) \n\ + lwz 0,12(1) \n\ + # ...unwind the stack frame, and jump to the PLT entry we updated.\n\ + addi 1,1,64 \n\ + bctr \n\ + .size _dl_prof_resolve,.-_dl_prof_resolve \n\ + # Undo '.section text'.\n\ + .previous \n\ "); /* The actual _start code is in dl-start.S. Use a really |