diff options
author | Paul Mackerras <paulus@samba.org> | 2006-11-01 17:44:37 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-11-01 17:56:59 -0500 |
commit | 3ccfc65c5004e5fe5cfbffe43b8acc686680b53e (patch) | |
tree | fb51ff8d88ed681522c889afdf6c00cc395c869f /arch/powerpc/kernel/head_64.S | |
parent | dd472546edefe0d48613c466b110533514e20455 (diff) |
[PATCH] powerpc: Eliminate "exceeds stub group size" linker warning
It turns out that the linker warnings on 64-bit powerpc about "section
blah exceeds stub group size" were being triggered by conditional
branches in head_64.S branching to global symbols, whether in
head_64.S or in other files. This eliminates the warnings by making
some global symbols in head_64.S no longer global, and by rearranging
some branches.
Signed-off-by: Paul Mackerras <paulus@samba.org>
[ Yee-haa. Maybe I'll notice newly introduced real warnings now - Linus ]
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/powerpc/kernel/head_64.S')
-rw-r--r-- | arch/powerpc/kernel/head_64.S | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 291e3629b504..e720729f3e55 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -487,7 +487,7 @@ BEGIN_FTR_SECTION | |||
487 | rlwimi r13,r12,16,0x20 | 487 | rlwimi r13,r12,16,0x20 |
488 | mfcr r12 | 488 | mfcr r12 |
489 | cmpwi r13,0x2c | 489 | cmpwi r13,0x2c |
490 | beq .do_stab_bolted_pSeries | 490 | beq do_stab_bolted_pSeries |
491 | mtcrf 0x80,r12 | 491 | mtcrf 0x80,r12 |
492 | mfspr r12,SPRN_SPRG2 | 492 | mfspr r12,SPRN_SPRG2 |
493 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) | 493 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) |
@@ -600,7 +600,7 @@ system_call_pSeries: | |||
600 | STD_EXCEPTION_PSERIES(., performance_monitor) | 600 | STD_EXCEPTION_PSERIES(., performance_monitor) |
601 | 601 | ||
602 | .align 7 | 602 | .align 7 |
603 | _GLOBAL(do_stab_bolted_pSeries) | 603 | do_stab_bolted_pSeries: |
604 | mtcrf 0x80,r12 | 604 | mtcrf 0x80,r12 |
605 | mfspr r12,SPRN_SPRG2 | 605 | mfspr r12,SPRN_SPRG2 |
606 | EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted) | 606 | EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted) |
@@ -1046,7 +1046,7 @@ slb_miss_fault: | |||
1046 | li r5,0 | 1046 | li r5,0 |
1047 | std r4,_DAR(r1) | 1047 | std r4,_DAR(r1) |
1048 | std r5,_DSISR(r1) | 1048 | std r5,_DSISR(r1) |
1049 | b .handle_page_fault | 1049 | b handle_page_fault |
1050 | 1050 | ||
1051 | unrecov_user_slb: | 1051 | unrecov_user_slb: |
1052 | EXCEPTION_PROLOG_COMMON(0x4200, PACA_EXGEN) | 1052 | EXCEPTION_PROLOG_COMMON(0x4200, PACA_EXGEN) |
@@ -1174,12 +1174,13 @@ program_check_common: | |||
1174 | .globl fp_unavailable_common | 1174 | .globl fp_unavailable_common |
1175 | fp_unavailable_common: | 1175 | fp_unavailable_common: |
1176 | EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN) | 1176 | EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN) |
1177 | bne .load_up_fpu /* if from user, just load it up */ | 1177 | bne 1f /* if from user, just load it up */ |
1178 | bl .save_nvgprs | 1178 | bl .save_nvgprs |
1179 | addi r3,r1,STACK_FRAME_OVERHEAD | 1179 | addi r3,r1,STACK_FRAME_OVERHEAD |
1180 | ENABLE_INTS | 1180 | ENABLE_INTS |
1181 | bl .kernel_fp_unavailable_exception | 1181 | bl .kernel_fp_unavailable_exception |
1182 | BUG_OPCODE | 1182 | BUG_OPCODE |
1183 | 1: b .load_up_fpu | ||
1183 | 1184 | ||
1184 | .align 7 | 1185 | .align 7 |
1185 | .globl altivec_unavailable_common | 1186 | .globl altivec_unavailable_common |
@@ -1279,10 +1280,10 @@ _GLOBAL(do_hash_page) | |||
1279 | std r4,_DSISR(r1) | 1280 | std r4,_DSISR(r1) |
1280 | 1281 | ||
1281 | andis. r0,r4,0xa450 /* weird error? */ | 1282 | andis. r0,r4,0xa450 /* weird error? */ |
1282 | bne- .handle_page_fault /* if not, try to insert a HPTE */ | 1283 | bne- handle_page_fault /* if not, try to insert a HPTE */ |
1283 | BEGIN_FTR_SECTION | 1284 | BEGIN_FTR_SECTION |
1284 | andis. r0,r4,0x0020 /* Is it a segment table fault? */ | 1285 | andis. r0,r4,0x0020 /* Is it a segment table fault? */ |
1285 | bne- .do_ste_alloc /* If so handle it */ | 1286 | bne- do_ste_alloc /* If so handle it */ |
1286 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) | 1287 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) |
1287 | 1288 | ||
1288 | /* | 1289 | /* |
@@ -1324,7 +1325,7 @@ BEGIN_FW_FTR_SECTION | |||
1324 | * because ret_from_except_lite will check for and handle pending | 1325 | * because ret_from_except_lite will check for and handle pending |
1325 | * interrupts if necessary. | 1326 | * interrupts if necessary. |
1326 | */ | 1327 | */ |
1327 | beq .ret_from_except_lite | 1328 | beq 13f |
1328 | /* For a hash failure, we don't bother re-enabling interrupts */ | 1329 | /* For a hash failure, we don't bother re-enabling interrupts */ |
1329 | ble- 12f | 1330 | ble- 12f |
1330 | 1331 | ||
@@ -1346,14 +1347,14 @@ BEGIN_FW_FTR_SECTION | |||
1346 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | 1347 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) |
1347 | 1348 | ||
1348 | /* Here we have a page fault that hash_page can't handle. */ | 1349 | /* Here we have a page fault that hash_page can't handle. */ |
1349 | _GLOBAL(handle_page_fault) | 1350 | handle_page_fault: |
1350 | ENABLE_INTS | 1351 | ENABLE_INTS |
1351 | 11: ld r4,_DAR(r1) | 1352 | 11: ld r4,_DAR(r1) |
1352 | ld r5,_DSISR(r1) | 1353 | ld r5,_DSISR(r1) |
1353 | addi r3,r1,STACK_FRAME_OVERHEAD | 1354 | addi r3,r1,STACK_FRAME_OVERHEAD |
1354 | bl .do_page_fault | 1355 | bl .do_page_fault |
1355 | cmpdi r3,0 | 1356 | cmpdi r3,0 |
1356 | beq+ .ret_from_except_lite | 1357 | beq+ 13f |
1357 | bl .save_nvgprs | 1358 | bl .save_nvgprs |
1358 | mr r5,r3 | 1359 | mr r5,r3 |
1359 | addi r3,r1,STACK_FRAME_OVERHEAD | 1360 | addi r3,r1,STACK_FRAME_OVERHEAD |
@@ -1370,12 +1371,14 @@ _GLOBAL(handle_page_fault) | |||
1370 | bl .low_hash_fault | 1371 | bl .low_hash_fault |
1371 | b .ret_from_except | 1372 | b .ret_from_except |
1372 | 1373 | ||
1374 | 13: b .ret_from_except_lite | ||
1375 | |||
1373 | /* here we have a segment miss */ | 1376 | /* here we have a segment miss */ |
1374 | _GLOBAL(do_ste_alloc) | 1377 | do_ste_alloc: |
1375 | bl .ste_allocate /* try to insert stab entry */ | 1378 | bl .ste_allocate /* try to insert stab entry */ |
1376 | cmpdi r3,0 | 1379 | cmpdi r3,0 |
1377 | beq+ fast_exception_return | 1380 | bne- handle_page_fault |
1378 | b .handle_page_fault | 1381 | b fast_exception_return |
1379 | 1382 | ||
1380 | /* | 1383 | /* |
1381 | * r13 points to the PACA, r9 contains the saved CR, | 1384 | * r13 points to the PACA, r9 contains the saved CR, |