powerpc: Make load_up_fpu and load_up_altivec callable
Make load_up_fpu and load_up_altivec callable so they can be reused by the VSX code. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
10e343925a
commit
6f3d8e6947
|
@ -85,7 +85,7 @@ _GLOBAL(load_up_fpu)
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
/* restore registers and return */
|
/* restore registers and return */
|
||||||
/* we haven't used ctr or xer or lr */
|
/* we haven't used ctr or xer or lr */
|
||||||
b fast_exception_return
|
blr
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* giveup_fpu(tsk)
|
* giveup_fpu(tsk)
|
||||||
|
|
|
@ -421,8 +421,10 @@ BEGIN_FTR_SECTION
|
||||||
b ProgramCheck
|
b ProgramCheck
|
||||||
END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
|
END_FTR_SECTION_IFSET(CPU_FTR_FPU_UNAVAILABLE)
|
||||||
EXCEPTION_PROLOG
|
EXCEPTION_PROLOG
|
||||||
bne load_up_fpu /* if from user, just load it up */
|
beq 1f
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
bl load_up_fpu /* if from user, just load it up */
|
||||||
|
b fast_exception_return
|
||||||
|
1: addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
|
EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
|
||||||
|
|
||||||
/* Decrementer */
|
/* Decrementer */
|
||||||
|
|
|
@ -741,7 +741,8 @@ fp_unavailable_common:
|
||||||
ENABLE_INTS
|
ENABLE_INTS
|
||||||
bl .kernel_fp_unavailable_exception
|
bl .kernel_fp_unavailable_exception
|
||||||
BUG_OPCODE
|
BUG_OPCODE
|
||||||
1: b .load_up_fpu
|
1: bl .load_up_fpu
|
||||||
|
b fast_exception_return
|
||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
.globl altivec_unavailable_common
|
.globl altivec_unavailable_common
|
||||||
|
@ -749,7 +750,10 @@ altivec_unavailable_common:
|
||||||
EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
|
EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
|
||||||
#ifdef CONFIG_ALTIVEC
|
#ifdef CONFIG_ALTIVEC
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
bne .load_up_altivec /* if from user, just load it up */
|
beq 1f
|
||||||
|
bl .load_up_altivec
|
||||||
|
b fast_exception_return
|
||||||
|
1:
|
||||||
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||||
#endif
|
#endif
|
||||||
bl .save_nvgprs
|
bl .save_nvgprs
|
||||||
|
@ -829,7 +833,7 @@ _STATIC(load_up_altivec)
|
||||||
std r4,0(r3)
|
std r4,0(r3)
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
/* restore registers and return */
|
/* restore registers and return */
|
||||||
b fast_exception_return
|
blr
|
||||||
#endif /* CONFIG_ALTIVEC */
|
#endif /* CONFIG_ALTIVEC */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -376,8 +376,10 @@ label:
|
||||||
#define FP_UNAVAILABLE_EXCEPTION \
|
#define FP_UNAVAILABLE_EXCEPTION \
|
||||||
START_EXCEPTION(FloatingPointUnavailable) \
|
START_EXCEPTION(FloatingPointUnavailable) \
|
||||||
NORMAL_EXCEPTION_PROLOG; \
|
NORMAL_EXCEPTION_PROLOG; \
|
||||||
bne load_up_fpu; /* if from user, just load it up */ \
|
beq 1f; \
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD; \
|
bl load_up_fpu; /* if from user, just load it up */ \
|
||||||
|
b fast_exception_return; \
|
||||||
|
1: addi r3,r1,STACK_FRAME_OVERHEAD; \
|
||||||
EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
|
EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
Loading…
Reference in New Issue