forked from Imagelibrary/rtems
powerpc: Remove _BSP_Fatal_error()
BSPs can use the bsp_fatal_extension() to provide BSP-specific fatal error handling. There is no need for a _BSP_Fatal_error(). Close #3246.
This commit is contained in:
@@ -58,7 +58,6 @@ libbsp_a_SOURCES =
|
||||
|
||||
libbsp_a_SOURCES += startup/bspstart.c \
|
||||
../shared/motorola/vpd.c startup/bspreset.c startup/i2c_init.c \
|
||||
../../powerpc/shared/startup/panic.c \
|
||||
../../powerpc/shared/startup/bspgetworkarea.c \
|
||||
../../powerpc/shared/startup/probeMemEnd.c \
|
||||
../../powerpc/shared/startup/bsppredriverhook.c \
|
||||
|
||||
@@ -112,12 +112,6 @@ uint32_t bsp_time_base_frequency;
|
||||
/* Legacy */
|
||||
uint32_t bsp_clicks_per_usec;
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
void bsp_start(void)
|
||||
{
|
||||
/*
|
||||
|
||||
@@ -51,20 +51,6 @@ static int mpc83xx_decrementer_exception_handler( BSP_Exception_frame *frame, un
|
||||
return 0;
|
||||
}
|
||||
|
||||
void _BSP_Fatal_error(unsigned n)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable( level);
|
||||
(void) level;
|
||||
|
||||
printk( "%s PANIC ERROR %u\n", rtems_get_version_string(), n);
|
||||
|
||||
while (1) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
void bsp_start( void)
|
||||
{
|
||||
rtems_status_code sc = RTEMS_SUCCESSFUL;
|
||||
|
||||
@@ -200,16 +200,3 @@ void bsp_start( void )
|
||||
*/
|
||||
BSP_rtems_irq_mng_init(0);
|
||||
}
|
||||
|
||||
static void BSP_ask_for_reset(void)
|
||||
{
|
||||
printk("system stopped, press RESET");
|
||||
while(1) {};
|
||||
}
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s FATAL ERROR %x\n",_RTEMS_version, v);
|
||||
BSP_ask_for_reset();
|
||||
}
|
||||
|
||||
|
||||
@@ -49,18 +49,6 @@ unsigned int bsp_clock_speed = 0;
|
||||
|
||||
uint32_t bsp_clicks_per_usec = 0;
|
||||
|
||||
void _BSP_Fatal_error(unsigned n)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
(void) level;
|
||||
rtems_interrupt_disable( level);
|
||||
|
||||
while (true) {
|
||||
mpc55xx_wait_for_interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
static void null_pointer_protection(void)
|
||||
{
|
||||
#ifdef MPC55XX_NULL_POINTER_PROTECTION
|
||||
|
||||
@@ -103,14 +103,6 @@ static void _BSP_GPLED1_off(void)
|
||||
csr->bcsr0 |= GP1_LED; /* Turn off GP1 LED */
|
||||
}
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
_BSP_GPLED0_on();
|
||||
_BSP_GPLED1_on();
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
static void _BSP_Uart1_enable(void)
|
||||
{
|
||||
BCSR *csr;
|
||||
|
||||
@@ -105,12 +105,6 @@ int i;
|
||||
BSP_output_char_function_type BSP_output_char = BSP_output_char_via_serial;
|
||||
BSP_polling_getchar_function_type BSP_poll_char = NULL;
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("\n%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
char *rtems_progname;
|
||||
|
||||
/*
|
||||
|
||||
@@ -111,12 +111,6 @@ static unsigned char ConfVPD_buff[200];
|
||||
static char cmdline_buf[CMDLINE_BUF_SIZE];
|
||||
char *BSP_commandline_string = cmdline_buf;
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
/* NOTE: we cannot simply malloc the commandline string;
|
||||
* save_boot_params() is called during a very early stage when
|
||||
* libc/malloc etc. are not yet initialized!
|
||||
|
||||
@@ -60,12 +60,6 @@ unsigned int BSP_time_base_divisor;
|
||||
|
||||
extern unsigned long __rtems_end[];
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
/*
|
||||
* bsp_start
|
||||
*
|
||||
|
||||
@@ -34,7 +34,7 @@ startup_SOURCES = ../../shared/bspclean.c \
|
||||
../../shared/bootcard.c ../../shared/sbrk.c \
|
||||
../../shared/getentropy-cpucounter.c \
|
||||
../../shared/gnatinstallhandler.c \
|
||||
startup/cmain.c startup/bspstart.c startup/bsppanic.c
|
||||
startup/cmain.c startup/bspstart.c
|
||||
# pclock
|
||||
# clock_SOURCES = ../../shared/clock_driver_simidle.c
|
||||
clock_SOURCES = ../shared/clock/clock.c
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#include <rtems.h>
|
||||
#include <rtems/bspIo.h>
|
||||
|
||||
static void
|
||||
__outb(int port, unsigned char v)
|
||||
{
|
||||
*((volatile unsigned char *)(0x80000000 + port)) = v;
|
||||
}
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__outb (0x92, 0x01);
|
||||
}
|
||||
@@ -52,20 +52,6 @@ uint32_t bsp_time_base_frequency;
|
||||
|
||||
uint32_t qoriq_clock_frequency;
|
||||
|
||||
void _BSP_Fatal_error(unsigned n)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_local_disable(level);
|
||||
(void) level;
|
||||
|
||||
printk("%s PANIC ERROR %u\n", rtems_get_version_string(), n);
|
||||
|
||||
while (1) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
static void initialize_frequency_parameters(void)
|
||||
{
|
||||
const void *fdt = bsp_fdt_get();
|
||||
|
||||
@@ -84,15 +84,6 @@ unsigned int BSP_processor_frequency;
|
||||
*/
|
||||
unsigned int BSP_time_base_divisor;
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
|
||||
while (true) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Use the shared implementations of the following routines
|
||||
*/
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
#include <rtems.h>
|
||||
#include <bsp.h>
|
||||
#include <bsp/bootcard.h>
|
||||
#include <bsp/uart.h>
|
||||
#include <rtems/bspIo.h>
|
||||
#include <rtems/error.h>
|
||||
#include <libcpu/stackTrace.h>
|
||||
#include <rtems/score/percpu.h>
|
||||
#include <rtems/score/threaddispatch.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
static void
|
||||
rebootQuestion(void)
|
||||
{
|
||||
printk("Press a key to reboot\n");
|
||||
BSP_poll_char_via_serial();
|
||||
bsp_reset();
|
||||
}
|
||||
|
||||
#define THESRC _Internal_errors_What_happened.the_source
|
||||
#define THEERR _Internal_errors_What_happened.the_error
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
unsigned long flags;
|
||||
const char *err = 0;
|
||||
|
||||
rtems_interrupt_disable(flags);
|
||||
(void) flags; /* avoid set but not used warning */
|
||||
|
||||
printk("%s\n",_RTEMS_version);
|
||||
printk("FATAL ERROR:\n");
|
||||
printk("Environment:");
|
||||
switch (THESRC) {
|
||||
case INTERNAL_ERROR_CORE:
|
||||
printk(" RTEMS Core\n");
|
||||
err = rtems_internal_error_text(THEERR);
|
||||
break;
|
||||
|
||||
case INTERNAL_ERROR_RTEMS_API:
|
||||
printk(" RTEMS API\n");
|
||||
err = rtems_status_text(THEERR);
|
||||
break;
|
||||
|
||||
case INTERNAL_ERROR_POSIX_API:
|
||||
printk(" POSIX API (errno)\n");
|
||||
/* could use strerror but I'd rather avoid using this here */
|
||||
break;
|
||||
|
||||
default:
|
||||
printk(" UNKNOWN (0x%x)\n",THESRC);
|
||||
break;
|
||||
}
|
||||
if ( _Thread_Dispatch_is_enabled() )
|
||||
printk("enabled\n");
|
||||
else
|
||||
printk(
|
||||
" Error occurred in a Thread Dispatching DISABLED"
|
||||
" context (level %" PRIu32 ")\n",
|
||||
_Thread_Dispatch_get_disable_level());
|
||||
|
||||
if ( _ISR_Nest_level ) {
|
||||
printk(
|
||||
" Error occurred from ISR context (ISR nest level %" PRIu32 ")\n",
|
||||
_ISR_Nest_level
|
||||
);
|
||||
}
|
||||
|
||||
printk("Error %d",THEERR);
|
||||
if (err) {
|
||||
printk(": %s",err);
|
||||
}
|
||||
printk("\n");
|
||||
printk("Stack Trace:\n");
|
||||
CPU_print_stack();
|
||||
|
||||
rebootQuestion();
|
||||
}
|
||||
@@ -42,12 +42,6 @@ uint32_t bsp_clock_speed; /* Serial clocks per second */
|
||||
uint32_t bsp_timer_least_valid;
|
||||
uint32_t bsp_timer_average_overhead;
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
|
||||
__asm__ __volatile ("sc");
|
||||
}
|
||||
|
||||
/*
|
||||
* bsp_start()
|
||||
*
|
||||
|
||||
@@ -33,20 +33,6 @@ LINKER_SYMBOL(bsp_exc_vector_base);
|
||||
*/
|
||||
uint32_t bsp_time_base_frequency = 10000000;
|
||||
|
||||
void _BSP_Fatal_error(unsigned n)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_local_disable(level);
|
||||
(void) level;
|
||||
|
||||
printk("%s PANIC ERROR %u\n", rtems_get_version_string(), n);
|
||||
|
||||
while (1) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
#define MTIVPR(base) \
|
||||
__asm__ volatile ("mtivpr %0" : : "r" (base))
|
||||
|
||||
|
||||
@@ -51,20 +51,6 @@ uint32_t bsp_timer_average_overhead; /* Average overhead of timer in ticks */
|
||||
uint32_t bsp_timer_least_valid; /* Least valid number from timer */
|
||||
bool bsp_timer_internal_clock; /* TRUE, when timer runs with CPU clk */
|
||||
|
||||
void _BSP_Fatal_error( unsigned n)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable( level);
|
||||
(void) level;
|
||||
|
||||
printk( "%s PANIC ERROR %u\n", _RTEMS_version, n);
|
||||
|
||||
while (1) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
static const char *bsp_tqm_get_cib_string( const char *cib_id)
|
||||
{
|
||||
char srch_pattern[10] = "";
|
||||
|
||||
@@ -103,15 +103,3 @@ void bsp_start( void )
|
||||
|
||||
bsp_interrupt_initialize();
|
||||
}
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
(void) level;
|
||||
|
||||
while (true) {
|
||||
/* Do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,6 @@ extern rtems_configuration_table BSP_Configuration; /* owned by BSP */
|
||||
#endif /* ASM */
|
||||
|
||||
void BSP_ask_for_reset(void);
|
||||
void _BSP_Fatal_error(unsigned int v);
|
||||
|
||||
/*
|
||||
* Prototypes for BSP methods shared across file boundaries
|
||||
|
||||
@@ -133,18 +133,6 @@ void BSP_ask_for_reset(void)
|
||||
}
|
||||
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
RTEMS_UNUSED rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
|
||||
printk("\n%s FATAL ERROR %x\n", rtems_get_version_string(), v);
|
||||
|
||||
BSP_ask_for_reset();
|
||||
}
|
||||
|
||||
|
||||
/*===================================================================*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -99,7 +99,6 @@ void zero_bss(void);
|
||||
#endif /* ASM */
|
||||
|
||||
void BSP_ask_for_reset(void);
|
||||
void _BSP_Fatal_error(unsigned int v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -147,18 +147,6 @@ void BSP_ask_for_reset(void)
|
||||
}
|
||||
|
||||
|
||||
void _BSP_Fatal_error(unsigned int v)
|
||||
{
|
||||
RTEMS_UNUSED rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
|
||||
printk("\n%s FATAL ERROR %x\n", rtems_get_version_string(), v);
|
||||
|
||||
BSP_ask_for_reset();
|
||||
}
|
||||
|
||||
|
||||
/*===================================================================*/
|
||||
|
||||
/*
|
||||
|
||||
@@ -675,22 +675,21 @@ static inline void _CPU_ISR_Set_level( uint32_t level )
|
||||
_CPU_MSR_SET(msr);
|
||||
}
|
||||
|
||||
/* Fatal Error manager macros */
|
||||
|
||||
/*
|
||||
* This routine copies _error into a known place -- typically a stack
|
||||
* location or a register, optionally disables interrupts, and
|
||||
* halts/stops the CPU.
|
||||
*/
|
||||
|
||||
void _BSP_Fatal_error(unsigned int);
|
||||
|
||||
#endif /* ASM */
|
||||
|
||||
#define _CPU_Fatal_halt( _source, _error ) \
|
||||
_BSP_Fatal_error(_error)
|
||||
|
||||
/* end of Fatal Error manager macros */
|
||||
do { \
|
||||
ppc_interrupt_disable(); \
|
||||
__asm__ volatile ( \
|
||||
"mr 3, %0\n" \
|
||||
"mr 4, %1\n" \
|
||||
"1:\n" \
|
||||
"b 1b\n" \
|
||||
: \
|
||||
: "r" (_source), "r" (_error) \
|
||||
: "memory" \
|
||||
); \
|
||||
} while ( 0 )
|
||||
|
||||
/*
|
||||
* Should be large enough to run all RTEMS tests. This ensures
|
||||
|
||||
Reference in New Issue
Block a user