Merge tag 'powerpc-4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[cascardo/linux.git] / tools / testing / selftests / powerpc / math / fpu_asm.S
index f3711d8..241f067 100644 (file)
@@ -8,70 +8,7 @@
  */
 
 #include "../basic_asm.h"
-
-#define PUSH_FPU(pos) \
-       stfd    f14,pos(sp); \
-       stfd    f15,pos+8(sp); \
-       stfd    f16,pos+16(sp); \
-       stfd    f17,pos+24(sp); \
-       stfd    f18,pos+32(sp); \
-       stfd    f19,pos+40(sp); \
-       stfd    f20,pos+48(sp); \
-       stfd    f21,pos+56(sp); \
-       stfd    f22,pos+64(sp); \
-       stfd    f23,pos+72(sp); \
-       stfd    f24,pos+80(sp); \
-       stfd    f25,pos+88(sp); \
-       stfd    f26,pos+96(sp); \
-       stfd    f27,pos+104(sp); \
-       stfd    f28,pos+112(sp); \
-       stfd    f29,pos+120(sp); \
-       stfd    f30,pos+128(sp); \
-       stfd    f31,pos+136(sp);
-
-#define POP_FPU(pos) \
-       lfd     f14,pos(sp); \
-       lfd     f15,pos+8(sp); \
-       lfd     f16,pos+16(sp); \
-       lfd     f17,pos+24(sp); \
-       lfd     f18,pos+32(sp); \
-       lfd     f19,pos+40(sp); \
-       lfd     f20,pos+48(sp); \
-       lfd     f21,pos+56(sp); \
-       lfd     f22,pos+64(sp); \
-       lfd     f23,pos+72(sp); \
-       lfd     f24,pos+80(sp); \
-       lfd     f25,pos+88(sp); \
-       lfd     f26,pos+96(sp); \
-       lfd     f27,pos+104(sp); \
-       lfd     f28,pos+112(sp); \
-       lfd     f29,pos+120(sp); \
-       lfd     f30,pos+128(sp); \
-       lfd     f31,pos+136(sp);
-
-# Careful calling this, it will 'clobber' fpu (by design)
-# Don't call this from C
-FUNC_START(load_fpu)
-       lfd     f14,0(r3)
-       lfd     f15,8(r3)
-       lfd     f16,16(r3)
-       lfd     f17,24(r3)
-       lfd     f18,32(r3)
-       lfd     f19,40(r3)
-       lfd     f20,48(r3)
-       lfd     f21,56(r3)
-       lfd     f22,64(r3)
-       lfd     f23,72(r3)
-       lfd     f24,80(r3)
-       lfd     f25,88(r3)
-       lfd     f26,96(r3)
-       lfd     f27,104(r3)
-       lfd     f28,112(r3)
-       lfd     f29,120(r3)
-       lfd     f30,128(r3)
-       lfd     f31,136(r3)
-       blr
-FUNC_END(load_fpu)
+#include "../fpu_asm.h"
 
 FUNC_START(check_fpu)
        mr r4,r3
@@ -138,9 +75,9 @@ FUNC_START(test_fpu)
        # r4 holds pointer to the pid
        # f14-f31 are non volatiles
        PUSH_BASIC_STACK(256)
+       PUSH_FPU(256)
        std     r3,STACK_FRAME_PARAM(0)(sp) # Address of darray
        std r4,STACK_FRAME_PARAM(1)(sp) # Address of pid
-       PUSH_FPU(STACK_FRAME_LOCAL(2,0))
 
        bl load_fpu
        nop
@@ -155,7 +92,7 @@ FUNC_START(test_fpu)
        bl check_fpu
        nop
 
-       POP_FPU(STACK_FRAME_LOCAL(2,0))
+       POP_FPU(256)
        POP_BASIC_STACK(256)
        blr
 FUNC_END(test_fpu)
@@ -166,10 +103,10 @@ FUNC_END(test_fpu)
 # registers while running is not zero.
 FUNC_START(preempt_fpu)
        PUSH_BASIC_STACK(256)
+       PUSH_FPU(256)
        std r3,STACK_FRAME_PARAM(0)(sp) # double *darray
        std r4,STACK_FRAME_PARAM(1)(sp) # int *threads_starting
        std r5,STACK_FRAME_PARAM(2)(sp) # int *running
-       PUSH_FPU(STACK_FRAME_LOCAL(3,0))
 
        bl load_fpu
        nop
@@ -192,7 +129,7 @@ FUNC_START(preempt_fpu)
        cmpwi r5,0
        bne 2b
 
-3:     POP_FPU(STACK_FRAME_LOCAL(3,0))
+3:     POP_FPU(256)
        POP_BASIC_STACK(256)
        blr
 FUNC_END(preempt_fpu)