core: panic: last instruction's address for assert

This commit is contained in:
Oleg Hahm 2015-09-04 16:50:25 +02:00
parent d7161b6d4b
commit f3245cecac
7 changed files with 13 additions and 8 deletions

View File

@ -50,6 +50,11 @@ NORETURN void core_panic(core_panic_t crash_code, const char *message)
crashed = 1;
puts("*** RIOT kernel panic");
puts(message);
#ifndef NDEBUG
if (crash_code == PANIC_ASSERT_FAIL) {
cpu_print_last_instruction();
}
#endif
#if DEVELHELP
#ifdef MODULE_PS
ps();

View File

@ -55,7 +55,7 @@ void cpu_init(void);
*/
static inline void cpu_print_last_instruction(void)
{
printf("n/a");
puts("n/a");
}
#ifdef __cplusplus

View File

@ -109,7 +109,7 @@ static inline void cpu_print_last_instruction(void)
{
register uint32_t *lr_ptr;
__asm__ __volatile__("mov %0, lr" : "=r"(lr_ptr));
printf("%p", lr_ptr);
printf("%p\n", lr_ptr);
}
#ifdef __cplusplus

View File

@ -50,7 +50,7 @@ static inline void cpu_print_last_instruction(void)
{
register uint32_t *lr_ptr;
__asm__ __volatile__("mov %0, lr" : "=r"(lr_ptr));
printf("%p", lr_ptr);
printf("%p\n", lr_ptr);
}
#ifdef __cplusplus

View File

@ -174,7 +174,7 @@ void msp430_cpu_init(void);
*/
static inline void cpu_print_last_instruction(void)
{
printf("n/a");
puts("n/a");
}
#ifdef __cplusplus

View File

@ -37,7 +37,7 @@ static inline void cpu_print_last_instruction(void)
{
void *p;
__asm__("1: mov 1b, %0" : "=r" (p));
printf("%p", p);
printf("%p\n", p);
}
#ifdef __cplusplus

View File

@ -135,12 +135,12 @@ bool x86_get_memory_region(uint64_t *start, uint64_t *len, unsigned long *cnt);
/**
* @brief Prints the last instruction's address
*
* @todo: Not supported
*/
static inline void cpu_print_last_instruction(void)
{
printf("n/a");
void *p;
__asm__("1: mov 1b, %0" : "=r" (p));
printf("%p\n", p);
}
#ifdef __cplusplus