diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2014-05-27 11:15:46 +0200 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2014-12-02 13:55:50 +0100 |
commit | 348d1812ba3bb83e2be6a99a7c706c5ea3a9d784 (patch) | |
tree | 6df17a461ba98b846f1881c265fa7d286bfc32e9 /c/src/lib/libbsp/sparc/shared/start | |
parent | DEVFS04: make test work on LEON3-FT GR712RC (diff) | |
download | rtems-348d1812ba3bb83e2be6a99a7c706c5ea3a9d784.tar.bz2 |
SPARC: window overflow optimization
I see no need for waiting the 3 instruction delay for wim to be
written in this case, since the STD after does not depend on WIM
Diffstat (limited to 'c/src/lib/libbsp/sparc/shared/start')
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/start/start.S | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/start/start.S b/c/src/lib/libbsp/sparc/shared/start/start.S index eb8e3c43a4..b7067b32bd 100644 --- a/c/src/lib/libbsp/sparc/shared/start/start.S +++ b/c/src/lib/libbsp/sparc/shared/start/start.S @@ -42,6 +42,15 @@ subcc %g1, 3, %g0; ! prepare for syscall 3 check /* + * Window Overflow optimized trap table entry + */ +#define WOTRAP(_vector, _handler) \ + sethi %hi(_handler), %l4; \ + jmp %l4+%lo(_handler); \ + save; \ + nop + +/* * Software trap. Treat as BAD_TRAP for the time being... */ @@ -72,7 +81,7 @@ SYM(trap_table): BAD_TRAP; ! 02 illegal instruction BAD_TRAP; ! 03 privileged instruction BAD_TRAP; ! 04 fp disabled - TRAP( 5, SYM(window_overflow_trap_handler) ); ! 05 window overflow + WOTRAP(5, SYM(window_overflow_trap_handler)); ! 05 window overflow TRAP( 6, SYM(window_underflow_trap_handler) );! 06 window underflow BAD_TRAP; ! 07 memory address not aligned BAD_TRAP; ! 08 fp exception |