diff options
author | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-07-17 13:53:04 +0000 |
---|---|---|
committer | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-07-17 13:53:04 +0000 |
commit | 7ae27751322a9b29ea9ff2adc146f064237127eb (patch) | |
tree | 0da82709cd17aeb997dee9da035042e68affd2e5 /c/src/lib/libbsp/arm/shared/abort | |
parent | exception handling maintenance (diff) | |
download | rtems-7ae27751322a9b29ea9ff2adc146f064237127eb.tar.bz2 |
ARM bsp maintenance
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/abort')
-rw-r--r-- | c/src/lib/libbsp/arm/shared/abort/simple_abort.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/c/src/lib/libbsp/arm/shared/abort/simple_abort.c b/c/src/lib/libbsp/arm/shared/abort/simple_abort.c index c292b1d3fb..e3c6b1cab3 100644 --- a/c/src/lib/libbsp/arm/shared/abort/simple_abort.c +++ b/c/src/lib/libbsp/arm/shared/abort/simple_abort.c @@ -64,25 +64,20 @@ void _print_full_context(uint32_t spsr) mode=_print_full_context_mode2txt[(spsr&0x1f)-0x10]; if(!mode) mode="unknown"; -#if defined(__thumb__) - asm volatile (" .code 16 \n" \ - "adr %[tmp], arm_code \n" \ - "bx %[tmp] \n" \ - "nop \n" \ - ".code 32 \n" \ - "arm_code: \n" \ - : [tmp]"=&r" (tmp) ); -#endif - asm volatile (" MRS %[cpsr], cpsr \n" - " ORR %[tmp], %[spsr], #0xc0 \n" - " MSR cpsr_c, %[tmp] \n" - " MOV %[prev_sp], sp \n" - " MOV %[prev_lr], lr \n" - " MSR cpsr_c, %[cpsr] \n" - : [prev_sp] "=&r" (prev_sp), [prev_lr] "=&r" (prev_lr), - [cpsr] "=&r" (cpsr), [tmp] "=&r" (tmp) - : [spsr] "r" (spsr) - : "cc"); + asm volatile ( + THUMB_TO_ARM + "mrs %[cpsr], cpsr\n" + "orr %[tmp], %[spsr], #0xc0\n" + "msr cpsr_c, %[tmp]\n" + "mov %[prev_sp], sp\n" + "mov %[prev_lr], lr\n" + "msr cpsr_c, %[cpsr]\n" + ARM_TO_THUMB + : [prev_sp] "=&r" (prev_sp), [prev_lr] "=&r" (prev_lr), + [cpsr] "=&r" (cpsr), [tmp] "=&r" (tmp) + : [spsr] "r" (spsr) + : "cc" + ); printk( "Previous sp=0x%08x lr=0x%08x and actual cpsr=%08x\n", |