summaryrefslogtreecommitdiffstats
path: root/bsps/sparc/shared/start/bsp_fatal_halt.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-28 14:41:32 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-28 21:04:20 +0200
commit8b65b57472d5086f2c035a09fdb07a40285beb4a (patch)
treea59df32bffd218107602471a541c10d66e1b509a /bsps/sparc/shared/start/bsp_fatal_halt.c
parentscore: Move per-CPU jobs support (diff)
downloadrtems-8b65b57472d5086f2c035a09fdb07a40285beb4a.tar.bz2
score: Canonicalize _CPU_Fatal_halt()
Move _CPU_Fatal_halt() declaration to <rtems/score/cpuimpl.h> and make sure it is a proper declaration of a function which does not return. Fix the type of the error code. If necessary, add the implementation to cpu.c. Implementing _CPU_Fatal_halt() as a function makes it possible to wrap this function for example to fully test _Terminate().
Diffstat (limited to 'bsps/sparc/shared/start/bsp_fatal_halt.c')
-rw-r--r--bsps/sparc/shared/start/bsp_fatal_halt.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/bsps/sparc/shared/start/bsp_fatal_halt.c b/bsps/sparc/shared/start/bsp_fatal_halt.c
index 3a82445ac1..f53275a073 100644
--- a/bsps/sparc/shared/start/bsp_fatal_halt.c
+++ b/bsps/sparc/shared/start/bsp_fatal_halt.c
@@ -12,27 +12,22 @@
*/
#include <bsp.h>
+#include <rtems/score/cpuimpl.h>
-#ifdef BSP_POWER_DOWN_AT_FATAL_HALT
-
-/* Spin CPU on fatal error exit */
-void _CPU_Fatal_halt(uint32_t source, uint32_t error)
+void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr error )
{
+#ifdef BSP_POWER_DOWN_AT_FATAL_HALT
+ /* Spin CPU on fatal error exit */
uint32_t level = sparc_disable_interrupts();
__asm__ volatile ( "mov %0, %%g1 " : "=r" (level) : "0" (level) );
while (1) ; /* loop forever */
-}
-
#else
-
-/* return to debugger, simulator, hypervisor or similar by exiting
- * with an error code. g1=1, g2=FATAL_SOURCE, G3=error-code.
- */
-void _CPU_Fatal_halt(uint32_t source, uint32_t error)
-{
+ /*
+ * Return to debugger, simulator, hypervisor or similar by exiting
+ * with an error code. g1=1, g2=FATAL_SOURCE, G3=error-code.
+ */
sparc_syscall_exit(source, error);
-}
-
#endif
+}