M port/devscc.c => port/devscc.c +13 -6
@@ 118,6 118,11 @@ SCC *scc[8]; /* up to 4 8530's */
#define CTLS 023
#define CTLQ 021
+#ifdef Zduart
+#define SCCTYPE 'z'
+#define onepointseven()
+#else
+#define SCCTYPE 't'
void
onepointseven(void)
{
@@ 125,6 130,7 @@ onepointseven(void)
for(i = 0; i < 20; i++)
;
}
+#endif
/*
* Access registers using the pointer in register 0.
@@ 407,20 413,21 @@ sccintr0(SCC *sp, uchar x)
unlock(cq);
}
}
-void
+int
sccintr(void)
{
uchar x;
- int i;
+ int i, j;
- for(i = 0; i < nscc; i += 2){
+ for(i = j = 0; i < nscc; i += 2){
x = sccrdreg(scc[i], 3);
if(x & (ExtPendB|RxPendB|TxPendB))
- sccintr0(scc[i+1], x);
+ ++j, sccintr0(scc[i+1], x);
x = x >> 3;
if(x & (ExtPendB|RxPendB|TxPendB))
- sccintr0(scc[i], x);
+ ++j, sccintr0(scc[i], x);
}
+ return j;
}
void
@@ 707,7 714,7 @@ sccinit(void)
Chan*
sccattach(char *spec)
{
- return devattach('t', spec);
+ return devattach(SCCTYPE, spec);
}
Chan*
M port/portfns.h => port/portfns.h +1 -1
@@ 201,7 201,7 @@ void runlock(RWlock*);
Proc* runproc(void);
void savefpregs(FPsave*);
void sccclock(void);
-void sccintr(void);
+int sccintr(void);
void sccsetup(void*, ulong, int);
void sccspecial(int, IOQ*, IOQ*, int);
void sched(void);
M power/trap.c => power/trap.c +0 -1
@@ 282,7 282,6 @@ intr(Ureg *ur)
* if nothing else, what the hell?
*/
if(!any && bogies++<10){
- if(0)
print("bogus intr lvl 5 pend %lux on %d\n", npend, m->machno);
USED(npend);
delay(100);