[PATCH 1/5] LEON3_MP ISR: shared-IRQ setup overwrite SMP/MP ISR trap handler
Gedare Bloom
gedare at rtems.org
Thu Oct 31 14:09:47 UTC 2013
On Thu, Oct 31, 2013 at 9:58 AM, Daniel Hellstrom <daniel at gaisler.com> wrote:
> Basically the shared-irq handler overwrite the SMP/MP traphandler
> previously initialized with set_vector(). That caused IPIs to enter
> BSP spurious handler.
>
> Signed-off-by: Daniel Hellstrom <daniel at gaisler.com>
RTEMS Project has not defined what it means to "sign-off" a commit, so
please leave this off.
> ---
> c/src/lib/libbsp/sparc/shared/irq/irq-shared.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> index c84eeb3..16119ff 100644
> --- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> +++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> @@ -32,6 +32,11 @@ void BSP_shared_interrupt_init(void)
> int i;
>
> for (i=0; i <= BSP_INTERRUPT_VECTOR_MAX_STD; i++) {
> +#if defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING)
> + /* Don't install IRQ handler on IPI interrupt */
> + if (i == LEON3_MP_IRQ)
> + continue;
> +#endif
This is fine for now. I wonder if there will be more such early
initialization handlers that need to be ignored. If so then we might
consider a more elegant solution.
> vector = SPARC_ASYNCHRONOUS_TRAP(i) + 0x10;
> rtems_interrupt_catch(BSP_ISR_handler, vector, &previous_isr);
> }
> --
> 1.7.0.4
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
More information about the devel
mailing list