|
@@ -17,6 +17,8 @@
|
|
|
#include <asm/asm-offsets.h>
|
|
|
#include <linux/errno.h>
|
|
|
|
|
|
+#ifdef CONFIG_PPC_FPU
|
|
|
+
|
|
|
#define STKFRM (PPC_MIN_STKFRM + 16)
|
|
|
|
|
|
.macro extab instr,handler
|
|
@@ -81,7 +83,7 @@ _GLOBAL(do_lfs)
|
|
|
mfmsr r6
|
|
|
ori r7,r6,MSR_FP
|
|
|
cmpwi cr7,r3,0
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stfd fr0,STKFRM-16(r1)
|
|
@@ -93,7 +95,7 @@ _GLOBAL(do_lfs)
|
|
|
lfd fr0,STKFRM-16(r1)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -108,7 +110,7 @@ _GLOBAL(do_lfd)
|
|
|
mfmsr r6
|
|
|
ori r7,r6,MSR_FP
|
|
|
cmpwi cr7,r3,0
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stfd fr0,STKFRM-16(r1)
|
|
@@ -120,7 +122,7 @@ _GLOBAL(do_lfd)
|
|
|
lfd fr0,STKFRM-16(r1)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -135,7 +137,7 @@ _GLOBAL(do_stfs)
|
|
|
mfmsr r6
|
|
|
ori r7,r6,MSR_FP
|
|
|
cmpwi cr7,r3,0
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stfd fr0,STKFRM-16(r1)
|
|
@@ -147,7 +149,7 @@ _GLOBAL(do_stfs)
|
|
|
lfd fr0,STKFRM-16(r1)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -162,7 +164,7 @@ _GLOBAL(do_stfd)
|
|
|
mfmsr r6
|
|
|
ori r7,r6,MSR_FP
|
|
|
cmpwi cr7,r3,0
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stfd fr0,STKFRM-16(r1)
|
|
@@ -174,7 +176,7 @@ _GLOBAL(do_stfd)
|
|
|
lfd fr0,STKFRM-16(r1)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -229,7 +231,7 @@ _GLOBAL(do_lvx)
|
|
|
oris r7,r6,MSR_VEC@h
|
|
|
cmpwi cr7,r3,0
|
|
|
li r8,STKFRM-16
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stvx vr0,r1,r8
|
|
@@ -241,7 +243,7 @@ _GLOBAL(do_lvx)
|
|
|
lvx vr0,r1,r8
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -257,7 +259,7 @@ _GLOBAL(do_stvx)
|
|
|
oris r7,r6,MSR_VEC@h
|
|
|
cmpwi cr7,r3,0
|
|
|
li r8,STKFRM-16
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
stvx vr0,r1,r8
|
|
@@ -269,7 +271,7 @@ _GLOBAL(do_stvx)
|
|
|
lvx vr0,r1,r8
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -325,7 +327,7 @@ _GLOBAL(do_lxvd2x)
|
|
|
oris r7,r6,MSR_VSX@h
|
|
|
cmpwi cr7,r3,0
|
|
|
li r8,STKFRM-16
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
STXVD2X(0,r1,r8)
|
|
@@ -337,7 +339,7 @@ _GLOBAL(do_lxvd2x)
|
|
|
LXVD2X(0,r1,r8)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -353,7 +355,7 @@ _GLOBAL(do_stxvd2x)
|
|
|
oris r7,r6,MSR_VSX@h
|
|
|
cmpwi cr7,r3,0
|
|
|
li r8,STKFRM-16
|
|
|
- mtmsrd r7
|
|
|
+ MTMSRD(r7)
|
|
|
isync
|
|
|
beq cr7,1f
|
|
|
STXVD2X(0,r1,r8)
|
|
@@ -365,7 +367,7 @@ _GLOBAL(do_stxvd2x)
|
|
|
LXVD2X(0,r1,r8)
|
|
|
4: PPC_LL r0,STKFRM+PPC_LR_STKOFF(r1)
|
|
|
mtlr r0
|
|
|
- mtmsrd r6
|
|
|
+ MTMSRD(r6)
|
|
|
isync
|
|
|
mr r3,r9
|
|
|
addi r1,r1,STKFRM
|
|
@@ -373,3 +375,5 @@ _GLOBAL(do_stxvd2x)
|
|
|
extab 2b,3b
|
|
|
|
|
|
#endif /* CONFIG_VSX */
|
|
|
+
|
|
|
+#endif /* CONFIG_PPC_FPU */
|