On Wed, Oct 8, 2014 at 4:22 PM, Joel Sherrill <joel.sherr...@oarcorp.com> wrote: > > On 10/8/2014 3:14 PM, Gedare Bloom wrote: >> On Wed, Oct 8, 2014 at 3:16 PM, Joel Sherrill <joel.sherr...@oarcorp.com> >> 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 <jmonk...@adventnetworks.com> >>> * >>> - * 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?
Sure. >> -Gedare >>> } >>> >>> -- >>> 1.9.3 >>> >>> _______________________________________________ >>> devel mailing list >>> devel@rtems.org >>> http://lists.rtems.org/mailman/listinfo/devel > > -- > Joel Sherrill, Ph.D. Director of Research & Development > joel.sherr...@oarcorp.com On-Line Applications Research > Ask me about RTEMS: a free RTOS Huntsville AL 35805 > Support Available (256) 722-9985 > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel