Module: xenomai-2.6
Branch: master
Commit: d2f2904b5ce2012d342fc0e9b66fb1f87af50607
URL:    
http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=d2f2904b5ce2012d342fc0e9b66fb1f87af50607

Author: Philippe Gerum <r...@xenomai.org>
Date:   Fri Apr  4 10:21:35 2014 +0200

hal/powerpc: fixup fpu save/restore helpers for v3.12+

---

 ksrc/arch/powerpc/fpu.S |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/ksrc/arch/powerpc/fpu.S b/ksrc/arch/powerpc/fpu.S
index e0adf90..be23180 100644
--- a/ksrc/arch/powerpc/fpu.S
+++ b/ksrc/arch/powerpc/fpu.S
@@ -56,11 +56,20 @@ END_FTR_SECTION_IFSET(CPU_FTR_601)
 #endif
 #endif /* !CONFIG_PPC64 */
 
+#ifdef THREAD_FPSTATE
+#define FIXUP_REG_FPSTATE(__reg) addi  __reg,__reg,THREAD_FPSTATE
+#else
+#define FIXUP_REG_FPSTATE(__reg)
+#ifndef THREAD_FPSCR
 /*
  * The following accessor has to work with ancient kernel versions,
  * for which THREAD_FPSCR is not usable for 64bit save/restore.
  */
-#define __FPSCR(base)  THREAD_FPR0+32*8(base)
+#define FPSTATE_FPSCR(base)    THREAD_FPR0+32*8(base)
+#else
+#define        FPSTATE_FPSCR(base)     THREAD_FPSCR(base)
+#endif
+#endif
 
 /* r3 = &thread_struct (tcb->fpup) */
 _GLOBAL(rthal_save_fpu)
@@ -69,9 +78,10 @@ _GLOBAL(rthal_save_fpu)
        SYNC
        MTMSRD(r5)
        isync
+       FIXUP_REG_FPSTATE(r3)
        SAVE_32FPRS(0,r3)
        mffs    fr0
-       stfd    fr0,__FPSCR(r3)
+       stfd    fr0,FPSTATE_FPSCR(r3)
        blr
 
 /* r3 = &thread_struct */
@@ -90,7 +100,8 @@ _GLOBAL(rthal_restore_fpu)
        SYNC
        MTMSRD(r5)
        isync
-       lfd     fr0,__FPSCR(r3)
+       FIXUP_REG_FPSTATE(r3)
+       lfd     fr0,FPSTATE_FPSCR(r3)
        MTFSF_L(fr0)
        REST_32FPRS(0,r3)
        blr


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git

Reply via email to