diff options
author | Anton Blanchard <anton@samba.org> | 2014-02-04 00:04:52 -0500 |
---|---|---|
committer | Anton Blanchard <anton@samba.org> | 2014-04-22 20:05:17 -0400 |
commit | ad0289e4acf2bd6989e745cff3b4f0781a919e30 (patch) | |
tree | 2027687114b62c2ac5fc201897e67795ea7e964b /arch/powerpc/kernel/head_64.S | |
parent | b1576fec7f4dd4657694fefc97fda4cf28ec68e9 (diff) |
powerpc: Remove superflous function descriptors in assembly only code
We have a number of places where we load the text address of a local
function and indirectly branch to it in assembly. Since it is an
indirect branch binutils will not know to use the function text
address, so that trick wont work.
There is no need for these functions to have a function descriptor
so we can replace it with a label and remove the dot symbol.
Signed-off-by: Anton Blanchard <anton@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/head_64.S')
-rw-r--r-- | arch/powerpc/kernel/head_64.S | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index afcfd631bf7f..8d7c868e5a43 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -639,7 +639,7 @@ __secondary_start: | |||
639 | stb r0,PACAIRQHAPPENED(r13) | 639 | stb r0,PACAIRQHAPPENED(r13) |
640 | 640 | ||
641 | /* enable MMU and jump to start_secondary */ | 641 | /* enable MMU and jump to start_secondary */ |
642 | LOAD_REG_ADDR(r3, .start_secondary_prolog) | 642 | LOAD_REG_ADDR(r3, start_secondary_prolog) |
643 | LOAD_REG_IMMEDIATE(r4, MSR_KERNEL) | 643 | LOAD_REG_IMMEDIATE(r4, MSR_KERNEL) |
644 | 644 | ||
645 | mtspr SPRN_SRR0,r3 | 645 | mtspr SPRN_SRR0,r3 |
@@ -652,7 +652,7 @@ __secondary_start: | |||
652 | * zero the stack back-chain pointer and get the TOC virtual address | 652 | * zero the stack back-chain pointer and get the TOC virtual address |
653 | * before going into C code. | 653 | * before going into C code. |
654 | */ | 654 | */ |
655 | _GLOBAL(start_secondary_prolog) | 655 | start_secondary_prolog: |
656 | ld r2,PACATOC(r13) | 656 | ld r2,PACATOC(r13) |
657 | li r3,0 | 657 | li r3,0 |
658 | std r3,0(r1) /* Zero the stack frame pointer */ | 658 | std r3,0(r1) /* Zero the stack frame pointer */ |
@@ -778,7 +778,7 @@ _INIT_STATIC(start_here_multiplatform) | |||
778 | mr r3,r31 | 778 | mr r3,r31 |
779 | bl early_setup /* also sets r13 and SPRG_PACA */ | 779 | bl early_setup /* also sets r13 and SPRG_PACA */ |
780 | 780 | ||
781 | LOAD_REG_ADDR(r3, .start_here_common) | 781 | LOAD_REG_ADDR(r3, start_here_common) |
782 | ld r4,PACAKMSR(r13) | 782 | ld r4,PACAKMSR(r13) |
783 | mtspr SPRN_SRR0,r3 | 783 | mtspr SPRN_SRR0,r3 |
784 | mtspr SPRN_SRR1,r4 | 784 | mtspr SPRN_SRR1,r4 |
@@ -786,7 +786,8 @@ _INIT_STATIC(start_here_multiplatform) | |||
786 | b . /* prevent speculative execution */ | 786 | b . /* prevent speculative execution */ |
787 | 787 | ||
788 | /* This is where all platforms converge execution */ | 788 | /* This is where all platforms converge execution */ |
789 | _INIT_GLOBAL(start_here_common) | 789 | |
790 | start_here_common: | ||
790 | /* relocation is on at this point */ | 791 | /* relocation is on at this point */ |
791 | std r1,PACAKSAVE(r13) | 792 | std r1,PACAKSAVE(r13) |
792 | 793 | ||