--- /cygdrive/w/share/anon_cvs/ecos/packages/hal/arm/arch/current/src/vectors.S 2006-02-10 00:47:39.000000000 +0800 +++ /cygdrive/c/development/ecos/packages/hal/arm/arch/current/src/vectors.S 2006-11-16 15:46:25.424420500 +0800 @@ -204,11 +204,19 @@ #endif ldr pc,.undefined_instruction // 0x04 ldr pc,.software_interrupt // 0x08 start && software int ldr pc,.abort_prefetch // 0x0C ldr pc,.abort_data // 0x10 +#ifdef CYGPKG_HAL_ARM_LPC2XXX + #ifdef CYGSEM_HAL_ROM_RESET_USES_JUMP + .word 0xB4405F62 // checksum of other vectors + #else + .word 0xB8A06F58 // checksum of other vectors + #endif +#else .word 0 // unused +#endif ldr pc,.IRQ // 0x18 ldr pc,.FIQ // 0x1C // The layout of these pointers should match the vector table above since // they are copied in pairs. @@ -945,13 +953,18 @@ #endif // The return value from the handler (in r0) will indicate whether a // DSR is to be posted. Pass this together with a pointer to the // interrupt object we have just used to the interrupt tidy up routine. +#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS + // If configure to IGNORE spurious interrupt, we don't branch here. + // Let it handled by "interrupt_end()" as normal. +#else // don't run this for spurious interrupts! cmp v1,#CYGNUM_HAL_INTERRUPT_NONE beq 17f +#endif // CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS ldr r1,.hal_interrupt_objects ldr r1,[r1,v1,lsl #2] mov r2,v6 // register frame THUMB_MODE(r3,10)