diff options
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libcpu/sparc/access/access.S | 29 | ||||
-rw-r--r-- | c/src/lib/libcpu/sparc/reg_win/window.S | 14 |
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 |