X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cpu%2Farm%2Fdrv%2Fsysirq_at91.c;h=7b12af2d8f4993d2b918467a0f3280adbdf74443;hb=71ef544fea9e991379181432011abb47166fec7b;hp=33e6b0cd21fb56de666624566f3ba3acb0532d2a;hpb=efbdba7e2814415234ef47bd10ff888559ea90af;p=bertos.git diff --git a/cpu/arm/drv/sysirq_at91.c b/cpu/arm/drv/sysirq_at91.c index 33e6b0cd..7b12af2d 100644 --- a/cpu/arm/drv/sysirq_at91.c +++ b/cpu/arm/drv/sysirq_at91.c @@ -98,12 +98,14 @@ static void sysirq_dispatcher(void) __attribute__ ((naked)); static void sysirq_dispatcher(void) { IRQ_ENTRY(); - for (unsigned i = 0; i < countof(sysirq_tab); i++) - { - if (sysirq_tab[i].enabled - && sysirq_tab[i].handler) - sysirq_tab[i].handler(); - } + + /* PIT */ + if ((PIT_MR & BV(PITIEN)) + && (PIT_SR & BV(PITS)) + && sysirq_tab[SYSIRQ_PIT].handler) + sysirq_tab[SYSIRQ_PIT].handler(); + + /* TODO: add other system sources here */ IRQ_EXIT(); } @@ -123,8 +125,8 @@ void sysirq_init(void) IRQ_SAVE_DISABLE(flags); /* Disable all system interrupts */ - for (unsigned i = 0; i < countof(sysirq_tab); i++) - sysirq_tab[i].setEnable(false); + PIT_MR &= BV(PITIEN); + /* TODO: add other system sources here */ /* Set the vector. */ AIC_SVR(SYSC_ID) = sysirq_dispatcher;