summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/lib/libbsp/powerpc/shared/bootloader/ppcboot.lds2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/startup/bspstart.c8
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vectors/vectors_init.c15
3 files changed, 16 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/bootloader/ppcboot.lds b/c/src/lib/libbsp/powerpc/shared/bootloader/ppcboot.lds
index 9d46c0a83f..adf9130799 100644
--- a/c/src/lib/libbsp/powerpc/shared/bootloader/ppcboot.lds
+++ b/c/src/lib/libbsp/powerpc/shared/bootloader/ppcboot.lds
@@ -1,5 +1,5 @@
OUTPUT_ARCH(powerpc)
-OUTPUT_FORMAT(ppcboot)
+/* OUTPUT_FORMAT(ppcboot) */
/* Do we need any of these for elf?
__DYNAMIC = 0; */
SECTIONS
diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
index c45decac70..f567367834 100644
--- a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
@@ -77,14 +77,14 @@ unsigned int BSP_time_base_divisor;
void BSP_panic(char *s)
{
- printk("RTEMS 4.x PANIC %s\n", s);
- _return_to_ppcbug();
+ printk("%s PANIC %s\n",_RTEMS_version, s);
+ __asm__ __volatile ("sc");
}
void _BSP_Fatal_error(unsigned int v)
{
- printk("RTEMS 4.x PANIC ERROR %x\n", v);
- _return_to_ppcbug();
+ printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
+ __asm__ __volatile ("sc");
}
/*
diff --git a/c/src/lib/libbsp/powerpc/shared/vectors/vectors_init.c b/c/src/lib/libbsp/powerpc/shared/vectors/vectors_init.c
index 7310fbd2c5..8d0a500185 100644
--- a/c/src/lib/libbsp/powerpc/shared/vectors/vectors_init.c
+++ b/c/src/lib/libbsp/powerpc/shared/vectors/vectors_init.c
@@ -65,11 +65,18 @@ void C_exception_handler(BSP_Exception_frame* excPtr)
printk("\t XER = %x\n", excPtr->EXC_XER);
printk("\t LR = %x\n", excPtr->EXC_LR);
printk("\t MSR = %x\n", excPtr->EXC_MSR);
- if ( (excPtr->_EXC_number == ASM_DEC_VECTOR) ||
- (excPtr->_EXC_number == ASM_SYS_VECTOR)
- )
+ if (excPtr->_EXC_number == ASM_DEC_VECTOR)
recoverable = 1;
- if (!recoverable) BSP_panic("unrecoverable exception!!! Push reset button\n");
+ if (excPtr->_EXC_number == ASM_SYS_VECTOR)
+#ifdef TEST_RAW_EXCEPTION_CODE
+ recoverable = 1;
+#else
+ recoverable = 0;
+#endif
+ if (!recoverable) {
+ printk("unrecoverable exception!!! Push reset button\n");
+ while(1);
+ }
}
void nop_except_enable(const rtems_raw_except_connect_data* ptr)