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 | |
| 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>
| -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 291e3629b50..e720729f3e5 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, |
