summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2014-05-28 10:29:37 +0200
committerDaniel Hellstrom <daniel@gaisler.com>2014-12-02 13:57:15 +0100
commit6930aa7f19e4b3fd5ae6fc5178f650a706b0ffcd (patch)
treebbc28f456d5c4267ebe81c898a70c63080aadae3 /c/src/lib/libcpu
parentSPARC: window overflow optimization (diff)
downloadrtems-6930aa7f19e4b3fd5ae6fc5178f650a706b0ffcd.tar.bz2
SPARC: optimize window overflow trap entry
By using a optimized trap entry we can move instructions from the window overflow function into the trap entry vector. By using the saved locals instead of g1 we don't need to save that register temporarily. Also spead out non store instructions inbetween stores to use the write buffer better.
Diffstat (limited to 'c/src/lib/libcpu')
-rw-r--r--c/src/lib/libcpu/sparc/reg_win/window.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/sparc/reg_win/window.S b/c/src/lib/libcpu/sparc/reg_win/window.S
index 535dc83105..a7d6910219 100644
--- a/c/src/lib/libcpu/sparc/reg_win/window.S
+++ b/c/src/lib/libcpu/sparc/reg_win/window.S
@@ -60,6 +60,7 @@ SYM(window_overflow_trap_handler):
srl %l3, 1, %l3 ! l3 = WIM >> 1
wr %l3, %l2, %wim ! WIM = (WIM >> 1) ^
! (WIM << (Number Windows - 1))
+ ! 3 instruction delay not needed here
std %i0, [%sp + 0x20] ! save input register set
std %i2, [%sp + 0x28]
std %i4, [%sp + 0x30]