Mercurial > nand-ecoscentric
diff packages/hal/arm/arch/current/src/arm_stub.c @ 36:e97d78785e2d ecos-sw-1999-09-12
Merge from eCos master repository on 1999-09-12-15:40:34-BST
| author | jlarmour |
|---|---|
| date | Sun, 12 Sep 1999 15:26:05 +0000 |
| parents | 29bc183297e1 |
| children | e7ba79f6d3a8 |
line wrap: on
line diff
--- a/packages/hal/arm/arch/current/src/arm_stub.c +++ b/packages/hal/arm/arch/current/src/arm_stub.c @@ -32,6 +32,7 @@ #define TRUE 1 #endif + #ifdef CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT #include <cyg/hal/dbg-threads-api.h> // dbg_currthread_id #endif @@ -40,7 +41,16 @@ int __computeSignal (unsigned int trap_number) { + // should also catch CYGNUM_HAL_VECTOR_UNDEF_INSTRUCTION here but we + // can't tell the different between a real one and a breakpoint :-( switch (trap_number) { + case CYGNUM_HAL_VECTOR_ABORT_PREFETCH: // Fall through + case CYGNUM_HAL_VECTOR_ABORT_DATA: // Fall through + case CYGNUM_HAL_VECTOR_reserved: + return SIGBUS; + case CYGNUM_HAL_VECTOR_IRQ: + case CYGNUM_HAL_VECTOR_FIQ: + return SIGINT; default: return SIGTRAP; } @@ -48,12 +58,12 @@ int __computeSignal (unsigned int trap_n /* Return the trap number corresponding to the last-taken trap. */ - +volatile int jifl; int __get_trap_number (void) { // The vector is not not part of the GDB register set so get it // directly from the save context. - return _hal_registers->vector >> 8; + return _hal_registers->vector; } /* Set the currently-saved pc register value to PC. This also updates NPC @@ -77,6 +87,7 @@ void set_pc (target_register_t pc) static unsigned long *ss_saved_pc = NULL_PTR; static unsigned long ss_saved_instr; + #define FIXME() {diag_printf("FIXME - %s\n", __FUNCTION__); } static int @@ -391,4 +402,5 @@ void __skipinst (void) put_register (PC, get_register (PC) + 4); } + #endif // CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
