diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-28 14:41:32 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-28 21:04:20 +0200 |
commit | 8b65b57472d5086f2c035a09fdb07a40285beb4a (patch) | |
tree | a59df32bffd218107602471a541c10d66e1b509a /bsps | |
parent | score: Move per-CPU jobs support (diff) | |
download | rtems-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')
-rw-r--r-- | bsps/i386/pc386/start/bsp_fatal_halt.c | 8 | ||||
-rw-r--r-- | bsps/riscv/griscv/start/bsp_fatal_halt.c | 3 | ||||
-rw-r--r-- | bsps/riscv/riscv/start/bsp_fatal_halt.c | 3 | ||||
-rw-r--r-- | bsps/sparc/leon3/start/bsp_fatal_halt.c | 23 | ||||
-rw-r--r-- | bsps/sparc/shared/start/bsp_fatal_halt.c | 23 |
5 files changed, 25 insertions, 35 deletions
diff --git a/bsps/i386/pc386/start/bsp_fatal_halt.c b/bsps/i386/pc386/start/bsp_fatal_halt.c index 07bbd793e0..954955dee1 100644 --- a/bsps/i386/pc386/start/bsp_fatal_halt.c +++ b/bsps/i386/pc386/start/bsp_fatal_halt.c @@ -7,9 +7,9 @@ * http://www.rtems.org/license/LICENSE. */ -#include <bsp.h> +#include <rtems/score/cpuimpl.h> -void _CPU_Fatal_halt(uint32_t source, uint32_t error) +void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr error ) { __asm__ volatile ( "cli\n\t" @@ -18,7 +18,5 @@ void _CPU_Fatal_halt(uint32_t source, uint32_t error) : "=r" ((error)) : "0" ((error)) ); - #ifdef __GNUC__ - __builtin_unreachable(); - #endif + RTEMS_UNREACHABLE(); } diff --git a/bsps/riscv/griscv/start/bsp_fatal_halt.c b/bsps/riscv/griscv/start/bsp_fatal_halt.c index ced328ea0f..5b1eed3e8f 100644 --- a/bsps/riscv/griscv/start/bsp_fatal_halt.c +++ b/bsps/riscv/griscv/start/bsp_fatal_halt.c @@ -27,8 +27,9 @@ */ #include <bsp.h> +#include <rtems/score/cpuimpl.h> -void _CPU_Fatal_halt(uint32_t source, uint32_t error) +void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr error ) { /* ecall is currently used to halt the griscv cpu */ asm ("ecall"); diff --git a/bsps/riscv/riscv/start/bsp_fatal_halt.c b/bsps/riscv/riscv/start/bsp_fatal_halt.c index 348fa4f8f4..d9708661a7 100644 --- a/bsps/riscv/riscv/start/bsp_fatal_halt.c +++ b/bsps/riscv/riscv/start/bsp_fatal_halt.c @@ -28,10 +28,11 @@ #include <bsp/riscv.h> #include <bsp/fdt.h> +#include <rtems/score/cpuimpl.h> #include <libfdt.h> -void _CPU_Fatal_halt(uint32_t source, uint32_t error) +void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr error ) { const char *fdt; int node; diff --git a/bsps/sparc/leon3/start/bsp_fatal_halt.c b/bsps/sparc/leon3/start/bsp_fatal_halt.c index fa907a3363..5a6e3f490e 100644 --- a/bsps/sparc/leon3/start/bsp_fatal_halt.c +++ b/bsps/sparc/leon3/start/bsp_fatal_halt.c @@ -13,24 +13,19 @@ #include <bsp.h> #include <leon.h> +#include <rtems/score/cpuimpl.h> -#ifdef BSP_POWER_DOWN_AT_FATAL_HALT - -/* Power down LEON 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 + /* Power down LEON CPU on fatal error exit */ sparc_disable_interrupts(); leon3_power_down_loop(); -} - #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 +} 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 +} |