void bsp_spurious_initialize() { uint32_t trap; uint32_t level; uint32_t mask; level = sparc_disable_interrupts(); mask = LEON_REG.Interrupt_Mask; for ( trap=0 ; trap<256 ; trap++ ) { /* * Skip window overflow, underflow, and flush as well as software * trap 0 which we will use as a shutdown. Also avoid trap 0x70 - 0x7f * which cannot happen and where some of the space is used to pass * paramaters to the program. */ if (( trap == 5 || trap == 6 ) || (( trap >= 0x11 ) && ( trap <= 0x1f )) || (( trap >= 0x70 ) && ( trap <= 0x83 ))) continue; set_vector( (rtems_isr_entry) bsp_spurious_handler, SPARC_SYNCHRONOUS_TRAP( trap ), 1 ); } LEON_REG.Interrupt_Mask = mask; sparc_enable_interrupts(level); }
/* Power down LEON CPU on fatal error exit */ void _CPU_Fatal_halt(uint32_t source, uint32_t error) { sparc_disable_interrupts(); leon3_power_down_loop(); }
/* Use watchdog timer to reset system */ void bsp_watchdog_system_reset(void) { sparc_disable_interrupts(); bsp_watchdog_reload(0, 1); }