summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/shared/start (follow)
Commit message (Collapse)AuthorAgeFilesLines
* sparc: Fix window underflow trap handlerDaniel Hellstrom2016-03-241-1/+1
| | | | | | | | | | | | The window underflow trap handler used %i5 which destroyed the %o5 of the calling context. Bug introduced by 0d3b5d47429effb350448d9e9123a67db722109f. Go back to the pre 0d3b5d47429effb350448d9e9123a67db722109f behaviour and use the two unused instructions in the trap vector to optimize a bit. Close #2651.
* SPARC: optimize IRQ enable & disableDaniel Hellstrom2014-12-041-5/+25
| | | | | | | | | | | | | | | | * Coding style cleanups. * Use OS reserved trap 0x89 for IRQ Disable * Use OS reserved trap 0x8A for IRQ Enable * Add to SPARC CPU supplement documentation This will result in faster Disable/Enable code since the system trap handler does not need to decode which function the user wants. Besides the IRQ disable/enabled can now be inline which avoids the caller to take into account that o0-o7+g1-g4 registers are destroyed by trap handler. It was also possible to reduce the interrupt trap handler by five instructions due to this.
* SPARC: optimize window underflow trapDaniel Hellstrom2014-12-021-1/+10
| | | | | | | | | | | Save five instructions on underflow handling. By using an optimized trap entry we can move instructions from the window underflow function into the trap entry vector. By setting WIM=0 and using RESTORE it is possible to move the new WIM register content from the trapped window into the to-be-restored register window. It is then possible to avoid the WIM write delay.
* SPARC: window overflow optimizationDaniel Hellstrom2014-12-021-1/+10
| | | | | 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
* erc32,leon2: replace bsp_reset with SPARC fatal handlerDaniel Hellstrom2014-10-061-7/+0
| | | | | Now that a SPARC fatal handler is defined, we no longer need the BSP specific reset routine.
* SPARC: add BSP specific error handlerDaniel Hellstrom2014-10-061-3/+2
| | | | | | | | Instead of calling the system call TA instruction directly it is better paractise to isolate the trap implementation to the system call functions. BSP_fatal_exit() is added.
* SPARC BSPs: remove BSP_fatal_return unreached codeDaniel Hellstrom2014-10-061-7/+2
|
* SPARC: syscall optimizations and PSR-write fixDaniel Hellstrom2014-05-281-1/+10
| | | | | | | | | | | | | | | The last optimization missed was incorrect in regards to PSR write instruction delay must be 3 instructions. New optimizations: * align to 32-byte cache line. * rearrange code into three "blocks" of 4 instructions that is executed by syscall 2 and 3. This is to optimize for 16/32 byte cache lines. * use delay-slot instruction in trap table to reduce by one instruction. * use the fact that "wr %PSR" implements XOR to reduce by one instruction.
* bsps/sparc: Fix BSS initializationSebastian Huber2014-05-141-2/+0
| | | | | | | | Use __bss_start available via %g2 to clear the BSS section. The usage of _edata resulted in a copy of [_edata, __bss_start) from ROM to RAM and then a clear to zero of this area. Clear now only [__bss_start, _end).
* bsps/sparc: Fix data copy in start procedureSebastian Huber2014-05-141-9/+9
| | | | | | Use the register %g4 for the data content since it must be an even numbered register due to the std/ldd. Use the register %g2 for the BSS start address, so that it can be later re-used for the BSS zero loop.
* bsps: Use bsp_start_on_secondary_processor()Sebastian Huber2014-05-121-1/+1
| | | | Use a standard function for startup on secondary processors.
* sparc: Add _CPU_Get_current_per_CPU_control()Sebastian Huber2014-04-281-12/+13
| | | | | | | | | | | | | | | | Use register g6 for the per-CPU control of the current processor. The register g6 is reserved for the operating system by the SPARC ABI. On Linux register g6 is used for a similar purpose with the same method since 1996. The register g6 must be initialized during system startup and then must remain unchanged. Since the per-CPU control is used in all critical sections of the operating system, this is a performance optimization for the operating system core procedures. An additional benefit is that the low-level context switch and interrupt processing code is now identical on non-SMP and SMP configurations.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* bsp/leon3: Add bsp_reset() for SMP configurationSebastian Huber2014-02-211-0/+2
|
* sparc: Add LEON3_ASR17_PROCESSOR_INDEX_SHIFTSebastian Huber2014-02-141-1/+1
| | | | Add _LEON3_Get_current_processor().
* bsp/leon3: Fix SMP initializationSebastian Huber2014-02-051-24/+23
| | | | | | | Avoid usage of the same stack area by multiple secondary processors at the same time. Avoid magic delay loops.
* sparc shared: improve doxygenToma Radu2013-12-071-2/+0
| | | | Add doxygen to the header files in sparc/shared/include directory.
* sparc: refactored shared/start.S to shared/start/start.SDaniel Ramirez2013-12-031-0/+374