提交 6f3d8e69 编写于 作者: M Michael Neuling 提交者: Paul Mackerras

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: NMichael Neuling <mikey@neuling.org>
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 10e34392
...@@ -85,7 +85,7 @@ _GLOBAL(load_up_fpu) ...@@ -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 ...@@ -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: ...@@ -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: ...@@ -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) ...@@ -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 @@ ...@@ -376,8 +376,10 @@
#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__
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册