summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S')
-rw-r--r--cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S43
1 files changed, 22 insertions, 21 deletions
diff --git a/cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S b/cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S
index d0c2159a06..e3a7a9cc14 100644
--- a/cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S
+++ b/cpukit/score/cpu/powerpc/ppc-context-volatile-clobber.S
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2013, 2017 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -17,6 +17,7 @@
#endif
#include <rtems/asm.h>
+#include <rtems/score/cpu.h>
.global _CPU_Context_volatile_clobber
@@ -25,24 +26,24 @@ _CPU_Context_volatile_clobber:
#ifdef PPC_MULTILIB_FPU
.macro CLOBBER_F i
addi r4, r3, 0x100 + \i
- stw r4, 16(r1)
+ stw r4, 32(r1)
addi r4, r3, 0x200 + \i
- stw r4, 16 + 4(r1)
- lfd \i, 16(r1)
+ stw r4, 32 + 4(r1)
+ lfd \i, 32(r1)
.endm
- stwu r1, -32(r1)
+ PPC_REG_STORE_UPDATE r1, -96(r1)
/* Negate FPSCR[FPRF] bits */
mffs f0
- stfd f0, 16(r1)
- lwz r0, 20(r1)
+ stfd f0, 32(r1)
+ lwz r0, 36(r1)
nor r3, r0, r0
rlwinm r0, r0, 0, 20, 14
rlwinm r3, r3, 0, 15, 19
or r0, r3, r0
- stw r0, 20(r1)
- lfd f0, 16(r1)
+ stw r0, 36(r1)
+ lfd f0, 32(r1)
mtfsf 0xff, f0
CLOBBER_F 0
@@ -59,36 +60,36 @@ _CPU_Context_volatile_clobber:
CLOBBER_F 11
CLOBBER_F 12
CLOBBER_F 13
- addi r1, r1, 32
+ addi r1, r1, 96
#endif
#ifdef PPC_MULTILIB_ALTIVEC
.macro CLOBBER_V i
addi r4, r3, 0x300 + \i
- stw r4, 16(r1)
+ stw r4, 32(r1)
addi r4, r3, 0x400 + \i
- stw r4, 16 + 4(r1)
+ stw r4, 32 + 4(r1)
addi r4, r3, 0x500 + \i
- stw r4, 16 + 8(r1)
+ stw r4, 32 + 8(r1)
addi r4, r3, 0x600 + \i
- stw r4, 16 + 12(r1)
- li r4, 16
+ stw r4, 32 + 12(r1)
+ li r4, 32
lvx \i, r1, r4
.endm
- stwu r1, -32(r1)
+ PPC_REG_STORE_UPDATE r1, -96(r1)
/* Negate VSCR[SAT] bit */
mfvscr v0
- li r3, 28
+ li r3, 44
stvewx v0, r1, r3
- lwz r0, 28(r1)
+ lwz r0, 44(r1)
nor r3, r0, r0
rlwinm r0, r0, 0, 0, 30
rlwinm r3, r3, 0, 31, 31
or r0, r3, r0
- stw r0, 28(r1)
- li r3, 28
+ stw r0, 44(r1)
+ li r3, 44
lvewx v0, r1, r3
mtvscr v0
@@ -112,7 +113,7 @@ _CPU_Context_volatile_clobber:
CLOBBER_V 17
CLOBBER_V 18
CLOBBER_V 19
- addi r1, r1, 32
+ addi r1, r1, 96
#endif
addi r4, r3, 10