void bsp_start(void) { stm32f4_gpio_set_config_array(&stm32f4_start_config_gpio [0]); if (bsp_interrupt_initialize() != RTEMS_SUCCESSFUL) { _CPU_Fatal_halt(0xe); } }
/* * * NAME: bsp_start_default - BSP initialization function * * DESCRIPTION: * This function is called before RTEMS is initialized and used * adjust the kernel's configuration. * * This function also configures the CPU's memory protection unit. * * RESTRICTIONS/LIMITATIONS: * Since RTEMS is not configured, no RTEMS functions can be called. * */ void bsp_start_default( void ) { /* disable interrupts */ XSCALE_INT_ICMR = 0x0; rtems_exception_init_mngt(); if (bsp_interrupt_initialize() != RTEMS_SUCCESSFUL) { _CPU_Fatal_halt(0xe); } } /* bsp_start */
void bsp_start(void) { if (bsp_interrupt_initialize() != RTEMS_SUCCESSFUL) { _CPU_Fatal_halt(0xe); } bsp_stack_initialize( bsp_section_stack_begin, (uintptr_t) bsp_section_stack_size ); lpc32xx_timer_initialize(); }
void rtems_smp_process_interrupt( void ) { Per_CPU_Control *self_cpu = _Per_CPU_Get(); if ( self_cpu->message != 0 ) { uint32_t message; ISR_Level level; _Per_CPU_Lock_acquire( self_cpu, level ); message = self_cpu->message; self_cpu->message = 0; _Per_CPU_Lock_release( self_cpu, level ); #if defined(RTEMS_DEBUG) { void *sp = __builtin_frame_address(0); if ( !(message & RTEMS_BSP_SMP_SHUTDOWN) ) { printk( "ISR on CPU %d -- (0x%02x) (0x%p)\n", _Per_CPU_Get_index( self_cpu ), message, sp ); if ( message & RTEMS_BSP_SMP_SIGNAL_TO_SELF ) printk( "signal to self\n" ); if ( message & RTEMS_BSP_SMP_SHUTDOWN ) printk( "shutdown\n" ); } printk( "Dispatch level %d\n", _Thread_Dispatch_get_disable_level() ); } #endif if ( ( message & RTEMS_BSP_SMP_SHUTDOWN ) != 0 ) { _ISR_Disable( level ); _Thread_Dispatch_set_disable_level( 0 ); _Per_CPU_Change_state( self_cpu, PER_CPU_STATE_SHUTDOWN ); _CPU_Fatal_halt( _Per_CPU_Get_index( self_cpu ) ); /* does not continue past here */ } } }
void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { _User_extensions_Fatal( the_source, is_internal, the_error ); _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; _System_state_Set( SYSTEM_STATE_FAILED ); _CPU_Fatal_halt( the_error ); /* will not return from this routine */ while (true); }
void __Exception_Handler(CPU_Exception_frame *efr) { _CPU_Fatal_halt(0xECC0); }