On 10/8/2014 3:14 PM, Gedare Bloom wrote: > On Wed, Oct 8, 2014 at 3:16 PM, Joel Sherrill <[email protected]> > wrote: >> --- >> c/src/lib/libbsp/arm/shared/abort/abort.c | 44 >> +++++++++++++++++++------------ >> 1 file changed, 27 insertions(+), 17 deletions(-) >> >> diff --git a/c/src/lib/libbsp/arm/shared/abort/abort.c >> b/c/src/lib/libbsp/arm/shared/abort/abort.c >> index a686a62..05432f8 100644 >> --- a/c/src/lib/libbsp/arm/shared/abort/abort.c >> +++ b/c/src/lib/libbsp/arm/shared/abort/abort.c >> @@ -1,6 +1,10 @@ >> /* >> * ARM CPU Dependent Source >> * >> + * If you want a small footprint RTEMS, pls use simple_abort.c >> + */ >> + >> +/* >> * COPYRIGHT (c) 2007 Ray Xu. >> * mailto: Rayx at gmail dot com >> * >> @@ -10,8 +14,6 @@ >> * Copyright (c) 2002 Advent Networks, Inc >> * Jay Monkman <[email protected]> >> * >> - * If you want a small footprint RTEMS, pls use simple_abort.c >> - * >> * The license and distribution terms for this file may be >> * found in the file LICENSE in this distribution or at >> * http://www.rtems.org/license/LICENSE. >> @@ -44,21 +46,26 @@ >> #define SET_REG(r, ctx, v) (((uint32_t *)ctx)[r] = v) >> #define GET_OFFSET(insn) (insn & 0xfff) >> >> -uint32_t g_data_abort_cnt = 0; >> +/* >> + * Prototypes >> + */ >> +void _print_full_context(uint32_t); >> +void do_data_abort(uint32_t, uint32_t, Context_Control *); >> + >> +uint32_t g_data_abort_cnt = 0; >> /*this is a big overhead for MCU only got 16K RAM*/ >> -uint32_t g_data_abort_insn_list[1024]; >> +uint32_t g_data_abort_insn_list[1024]; >> >> >> char *_print_full_context_mode2txt[0x20]={ >> - [0x0]="user", /* User */ >> - [0x1]="fiq", /* FIQ - Fast Interrupt Request */ >> - [0x2]="irq", /* IRQ - Interrupt Request */ >> - [0x3]="super", /* Supervisor */ >> - [0x7]="abort", /* Abort */ >> - [0xb]="undef", /* Undefined */ >> - [0xf]="system" /* System */ >> - }; >> - >> + [0x0]="user", /* User */ >> + [0x1]="fiq", /* FIQ - Fast Interrupt Request */ >> + [0x2]="irq", /* IRQ - Interrupt Request */ >> + [0x3]="super", /* Supervisor */ >> + [0x7]="abort", /* Abort */ >> + [0xb]="undef", /* Undefined */ >> + [0xf]="system" /* System */ >> +}; >> >> void _print_full_context(uint32_t spsr) >> { >> @@ -82,7 +89,7 @@ void _print_full_context(uint32_t spsr) >> : [arm_switch_reg] "=&r" (arm_switch_reg), [prev_sp] "=&r" >> (prev_sp), [prev_lr] "=&r" (prev_lr), >> [cpsr] "=&r" (cpsr) >> : [spsr] "r" (spsr) >> - : "cc"); >> + : "cc"); >> >> printk("Previous sp=0x%08x lr=0x%08x and actual cpsr=%08x\n", >> prev_sp, prev_lr, cpsr); >> @@ -102,8 +109,11 @@ void _print_full_context(uint32_t spsr) >> * All unhandled instructions cause the system to hang. >> */ >> >> -void do_data_abort(uint32_t insn, uint32_t spsr, >> - Context_Control *ctx) >> +void do_data_abort( >> + uint32_t insn, >> + uint32_t spsr, >> + Context_Control *ctx >> +) >> { >> /* Clarify, which type is correct, CPU_Exception_frame or >> Context_Control */ >> uint8_t decode; >> @@ -156,6 +166,6 @@ void do_data_abort(uint32_t insn, uint32_t spsr, >> while(1) { >> continue; >> } >> - return; >> + (void) level; /* avoid set but unused warning */ > I'd prefer to see this closer to where level was set. Is immediately after the rtems_interrupt_disable() ok? > -Gedare >> } >> >> -- >> 1.9.3 >> >> _______________________________________________ >> devel mailing list >> [email protected] >> http://lists.rtems.org/mailman/listinfo/devel
-- Joel Sherrill, Ph.D. Director of Research & Development [email protected] On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ devel mailing list [email protected] http://lists.rtems.org/mailman/listinfo/devel
