From: leslie Date: Thu, 12 Jun 2008 22:52:59 +0000 (+0800) Subject: nagra: fix timer irq X-Git-Tag: 0.9.1~70 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=82da937a2d88f17a85838e9dc61c95aa972c0592;p=sasc-ng.git nagra: fix timer irq --- diff --git a/systems/nagra/nagra2-0101.c b/systems/nagra/nagra2-0101.c index 6b3ed46..bffd3be 100644 --- a/systems/nagra/nagra2-0101.c +++ b/systems/nagra/nagra2-0101.c @@ -849,14 +849,15 @@ void cN2Prov0101::TimerHandler(unsigned int num) { if(hwMapper) { int mask=hwMapper->AddCycles(num); - for(int t=1; mask; mask>>=1,t++) { - DisableTimers(11); - if(t==2) { - PRINTF(L_SYS_EMU,"Timer interrupt %u @ %04x",t,GetPc()); - RaiseException(9); - if(Interruptible()) throw(t); + for(int t=0; mask; mask>>=1,t++) + if(mask&1) { + DisableTimers(11); + if(t==2) { + PRINTF(L_SYS_EMU,"Timer interrupt %u @ %04x",t,GetPc()); + RaiseException(9); + if(Interruptible()) throw(t); + } } - } } } diff --git a/systems/nagra/nagra2.h b/systems/nagra/nagra2.h index 2762355..e846cbe 100644 --- a/systems/nagra/nagra2.h +++ b/systems/nagra/nagra2.h @@ -188,7 +188,7 @@ public: #define MAX_TIMERS 3 #define TIMER_NUM(x) (((x)>>2)&3) // timer order doesn't match HW order -#define HW_NUM(x) ((x+2)%3) +#define HW_NUM(x) ((x+1)%3) class cMapMemHW : public cMapMem { private: