SMP Problem on i386

Chris Johns chrisj at rtems.org
Tue Jul 30 16:03:12 UTC 2013


Sebastian Huber wrote:
> Hello,
>
> if I apply the following patch
>
> diff --git a/cpukit/score/include/rtems/bspsmp.h
> b/cpukit/score/include/rtems/bspsmp.h
> index ec8be9f..69cbff4 100644
> --- a/cpukit/score/include/rtems/bspsmp.h
> +++ b/cpukit/score/include/rtems/bspsmp.h
> @@ -104,8 +104,7 @@ void bsp_smp_broadcast_interrupt(void);
> * This function must not be called by the main processor. This function
> does
> * not return to the caller.
> */
> -void rtems_smp_secondary_cpu_initialize( void )
> - RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
> +void rtems_smp_secondary_cpu_initialize( void );
>
> /**
> * @brief Process the incoming interprocessor request.
>
> then the i386 SMP test cases fail on Qemu. I get a General Protection
> Fault after the "iret" in _ISR_Handler.
>
> What could be the reason for this?
>

The manual states you cannot assume registers are restored before 
calling the no return function. Is there an assumption about the state 
of the registers that made it just work ?

Chris



More information about the devel mailing list