summaryrefslogtreecommitdiff
path: root/c/src
diff options
context:
space:
mode:
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libcpu/sparc/access/access.S29
-rw-r--r--c/src/lib/libcpu/sparc/reg_win/window.S14
2 files changed, 43 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/sparc/access/access.S b/c/src/lib/libcpu/sparc/access/access.S
index 7e69f64c9d..e72cebb5b4 100644
--- a/c/src/lib/libcpu/sparc/access/access.S
+++ b/c/src/lib/libcpu/sparc/access/access.S
@@ -45,6 +45,33 @@ SYM(_ld64):
retl
ldd [%o0], %o0
+#if defined(__FIX_B2BST)
+
+SYM(_st8):
+ stub %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be16):
+SYM(_st16):
+ stuh %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be32):
+SYM(_st32):
+ st %o1, [%o0]
+ retl
+ nop
+
+SYM(_st_be64):
+SYM(_st64):
+ std %o1, [%o0]
+ retl
+ nop
+
+#else
+
SYM(_st8):
retl
stub %o1, [%o0]
@@ -63,3 +90,5 @@ SYM(_st_be64):
SYM(_st64):
retl
std %o1, [%o0]
+
+#endif
diff --git a/c/src/lib/libcpu/sparc/reg_win/window.S b/c/src/lib/libcpu/sparc/reg_win/window.S
index 3ec3f50a10..fa327ec28a 100644
--- a/c/src/lib/libcpu/sparc/reg_win/window.S
+++ b/c/src/lib/libcpu/sparc/reg_win/window.S
@@ -65,12 +65,19 @@ SYM(window_overflow_trap_handler):
mov %g1, %wim ! load new WIM
nop; nop; nop ! 3 slot delay
std %l0, [%sp + 0x00] ! save local register set
+ B2BSTORE_FIX
std %l2, [%sp + 0x08]
+ B2BSTORE_FIX
std %l4, [%sp + 0x10]
+ B2BSTORE_FIX
std %l6, [%sp + 0x18]
+ B2BSTORE_FIX
std %i0, [%sp + 0x20] ! save input register set
+ B2BSTORE_FIX
std %i2, [%sp + 0x28]
+ B2BSTORE_FIX
std %i4, [%sp + 0x30]
+ B2BSTORE_FIX
std %i6, [%sp + 0x38]
restore ! Go back to trap window.
mov %l7, %g1 ! restore g1
@@ -202,13 +209,20 @@ save_frame_loop:
*/
std %l0, [%sp + CPU_STACK_FRAME_L0_OFFSET]
+ B2BSTORE_FIX
std %l2, [%sp + CPU_STACK_FRAME_L2_OFFSET]
+ B2BSTORE_FIX
std %l4, [%sp + CPU_STACK_FRAME_L4_OFFSET]
+ B2BSTORE_FIX
std %l6, [%sp + CPU_STACK_FRAME_L6_OFFSET]
+ B2BSTORE_FIX
std %i0, [%sp + CPU_STACK_FRAME_I0_OFFSET]
+ B2BSTORE_FIX
std %i2, [%sp + CPU_STACK_FRAME_I2_OFFSET]
+ B2BSTORE_FIX
std %i4, [%sp + CPU_STACK_FRAME_I4_OFFSET]
+ B2BSTORE_FIX
std %i6, [%sp + CPU_STACK_FRAME_I6_FP_OFFSET]
sll %g4, 1, %g5 ! rotate the "wim" left 1