From d9b901c2b48ac24047554762dae1fe119d2b5098 Mon Sep 17 00:00:00 2001 From: Kelvin Lawson Date: Tue, 17 Sep 2013 20:36:25 +0100 Subject: [PATCH] dm36x: IRQ dispatcher, extra brackets required inside macro. --- ports/arm/platforms/dm36x/atomport-private.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ports/arm/platforms/dm36x/atomport-private.c b/ports/arm/platforms/dm36x/atomport-private.c index 86912ba..c3a9854 100644 --- a/ports/arm/platforms/dm36x/atomport-private.c +++ b/ports/arm/platforms/dm36x/atomport-private.c @@ -178,7 +178,7 @@ __interrupt_dispatcher (void) { /* Reload timer and enable interupts */ TIMER0_REG(DM36X_TIMER_PRD12) = (TIMER_CLK / SYSTEM_TICKS_PER_SEC) - 1; /* Set period to 100 ticks per second (PRD12) */ - TIMER0_REG(DM36X_TIMER_INTCTL_STAT) = (1 << 1) | (1 << 0); /* Enable/ack Compare/Match interrupt for Timer 1:2 */ + TIMER0_REG(DM36X_TIMER_INTCTL_STAT) |= (1 << 1) | (1 << 0); /* Enable/ack Compare/Match interrupt for Timer 1:2 */ /* * Let the Atomthreads kernel know we're about to enter an OS-aware @@ -191,10 +191,15 @@ __interrupt_dispatcher (void) /* Call the interrupt exit routine */ atomIntExit(TRUE); - - /* Ack the interrupt */ - INTC_REG((vector >= 32) ? DM36X_INTC_IRQ1 : DM36X_INTC_IRQ0) = (1 << (vector >= 32) ? (vector - 32) : vector); } + else + { + /* Unexpected vector */ + uart_write_halt ("Unexpected IRQ vector\n"); + } + + /* Ack the interrupt */ + INTC_REG(((vector >= 32) ? DM36X_INTC_IRQ1 : DM36X_INTC_IRQ0)) = (1 << ((vector >= 32) ? (vector - 32) : vector)); } }