[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>
This commit is contained in:
Родитель
dd472546ed
Коммит
3ccfc65c50
|
@ -487,7 +487,7 @@ BEGIN_FTR_SECTION
|
||||||
rlwimi r13,r12,16,0x20
|
rlwimi r13,r12,16,0x20
|
||||||
mfcr r12
|
mfcr r12
|
||||||
cmpwi r13,0x2c
|
cmpwi r13,0x2c
|
||||||
beq .do_stab_bolted_pSeries
|
beq do_stab_bolted_pSeries
|
||||||
mtcrf 0x80,r12
|
mtcrf 0x80,r12
|
||||||
mfspr r12,SPRN_SPRG2
|
mfspr r12,SPRN_SPRG2
|
||||||
END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
|
END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
|
||||||
|
@ -600,7 +600,7 @@ system_call_pSeries:
|
||||||
STD_EXCEPTION_PSERIES(., performance_monitor)
|
STD_EXCEPTION_PSERIES(., performance_monitor)
|
||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
_GLOBAL(do_stab_bolted_pSeries)
|
do_stab_bolted_pSeries:
|
||||||
mtcrf 0x80,r12
|
mtcrf 0x80,r12
|
||||||
mfspr r12,SPRN_SPRG2
|
mfspr r12,SPRN_SPRG2
|
||||||
EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted)
|
EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted)
|
||||||
|
@ -1046,7 +1046,7 @@ slb_miss_fault:
|
||||||
li r5,0
|
li r5,0
|
||||||
std r4,_DAR(r1)
|
std r4,_DAR(r1)
|
||||||
std r5,_DSISR(r1)
|
std r5,_DSISR(r1)
|
||||||
b .handle_page_fault
|
b handle_page_fault
|
||||||
|
|
||||||
unrecov_user_slb:
|
unrecov_user_slb:
|
||||||
EXCEPTION_PROLOG_COMMON(0x4200, PACA_EXGEN)
|
EXCEPTION_PROLOG_COMMON(0x4200, PACA_EXGEN)
|
||||||
|
@ -1174,12 +1174,13 @@ program_check_common:
|
||||||
.globl fp_unavailable_common
|
.globl fp_unavailable_common
|
||||||
fp_unavailable_common:
|
fp_unavailable_common:
|
||||||
EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN)
|
EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN)
|
||||||
bne .load_up_fpu /* if from user, just load it up */
|
bne 1f /* if from user, just load it up */
|
||||||
bl .save_nvgprs
|
bl .save_nvgprs
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
ENABLE_INTS
|
ENABLE_INTS
|
||||||
bl .kernel_fp_unavailable_exception
|
bl .kernel_fp_unavailable_exception
|
||||||
BUG_OPCODE
|
BUG_OPCODE
|
||||||
|
1: b .load_up_fpu
|
||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
.globl altivec_unavailable_common
|
.globl altivec_unavailable_common
|
||||||
|
@ -1279,10 +1280,10 @@ _GLOBAL(do_hash_page)
|
||||||
std r4,_DSISR(r1)
|
std r4,_DSISR(r1)
|
||||||
|
|
||||||
andis. r0,r4,0xa450 /* weird error? */
|
andis. r0,r4,0xa450 /* weird error? */
|
||||||
bne- .handle_page_fault /* if not, try to insert a HPTE */
|
bne- handle_page_fault /* if not, try to insert a HPTE */
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
andis. r0,r4,0x0020 /* Is it a segment table fault? */
|
andis. r0,r4,0x0020 /* Is it a segment table fault? */
|
||||||
bne- .do_ste_alloc /* If so handle it */
|
bne- do_ste_alloc /* If so handle it */
|
||||||
END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
|
END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1324,7 +1325,7 @@ BEGIN_FW_FTR_SECTION
|
||||||
* because ret_from_except_lite will check for and handle pending
|
* because ret_from_except_lite will check for and handle pending
|
||||||
* interrupts if necessary.
|
* interrupts if necessary.
|
||||||
*/
|
*/
|
||||||
beq .ret_from_except_lite
|
beq 13f
|
||||||
/* For a hash failure, we don't bother re-enabling interrupts */
|
/* For a hash failure, we don't bother re-enabling interrupts */
|
||||||
ble- 12f
|
ble- 12f
|
||||||
|
|
||||||
|
@ -1346,14 +1347,14 @@ BEGIN_FW_FTR_SECTION
|
||||||
END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES)
|
END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES)
|
||||||
|
|
||||||
/* Here we have a page fault that hash_page can't handle. */
|
/* Here we have a page fault that hash_page can't handle. */
|
||||||
_GLOBAL(handle_page_fault)
|
handle_page_fault:
|
||||||
ENABLE_INTS
|
ENABLE_INTS
|
||||||
11: ld r4,_DAR(r1)
|
11: ld r4,_DAR(r1)
|
||||||
ld r5,_DSISR(r1)
|
ld r5,_DSISR(r1)
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
bl .do_page_fault
|
bl .do_page_fault
|
||||||
cmpdi r3,0
|
cmpdi r3,0
|
||||||
beq+ .ret_from_except_lite
|
beq+ 13f
|
||||||
bl .save_nvgprs
|
bl .save_nvgprs
|
||||||
mr r5,r3
|
mr r5,r3
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
|
@ -1370,12 +1371,14 @@ _GLOBAL(handle_page_fault)
|
||||||
bl .low_hash_fault
|
bl .low_hash_fault
|
||||||
b .ret_from_except
|
b .ret_from_except
|
||||||
|
|
||||||
|
13: b .ret_from_except_lite
|
||||||
|
|
||||||
/* here we have a segment miss */
|
/* here we have a segment miss */
|
||||||
_GLOBAL(do_ste_alloc)
|
do_ste_alloc:
|
||||||
bl .ste_allocate /* try to insert stab entry */
|
bl .ste_allocate /* try to insert stab entry */
|
||||||
cmpdi r3,0
|
cmpdi r3,0
|
||||||
beq+ fast_exception_return
|
bne- handle_page_fault
|
||||||
b .handle_page_fault
|
b fast_exception_return
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* r13 points to the PACA, r9 contains the saved CR,
|
* r13 points to the PACA, r9 contains the saved CR,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче