M gnot/l.s => gnot/l.s +0 -1
@@ 170,7 170,6 @@ TEXT rfnote(SB), $0
MOVL A0, USP
MOVEM (A7), $0x7FFF
ADDL $((8+8+1+1)*BY2WD), A7
- MOVL $-1, R0 /* note causes error in sys call */
RTE
TEXT illegal(SB), $0
M gnot/trap.c => gnot/trap.c +1 -2
@@ 211,7 211,6 @@ noted(Ureg *ur, ulong arg0)
}
u->notified = 0;
memmove(ur, u->ureg, sizeof(Ureg));
- ur->r0 = -1; /* return error from the interrupted call */
switch(arg0){
case NCONT:
splhi();
@@ 344,7 343,7 @@ syscall(Ureg *aur)
if(r0 == NOTED) /* ugly hack */
noted(aur, *(ulong*)(sp+BY2WD)); /* doesn't return */
- if(u->nnote){
+ if(u->nnote && r0!=FORK){
ur->r0 = ret;
notify(ur);
}
M pc/trap.c => pc/trap.c +3 -4
@@ 256,10 256,9 @@ syscall(Ureg *ur)
panic("error stack");
}
u->p->insyscall = 0;
- if(ax == NOTED){
+ if(ax == NOTED)
noted(ur, *(ulong*)(sp+BY2WD));
- ret = -1;
- } else if(u->nnote && ax!=FORK){
+ else if(u->nnote && ax!=FORK){
ur->ax = ret;
notify(ur);
}
@@ 346,7 345,7 @@ noted(Ureg *ur, ulong arg0)
u->notified = 0;
nur->flags = (u->svflags&0xffffff00) | (ur->flags&0xff);
memmove(ur, u->ureg, sizeof(Ureg));
- ur->ax = -1; /* return error from the interrupted syscall */
+/* ur->ax = -1; /* return error from the interrupted syscall */
switch(arg0){
case NCONT:
splhi();
M power/devhotrod.c => power/devhotrod.c +7 -0
@@ 204,7 204,14 @@ hotrodopen(Chan *c, int omode)
hotwait(hmp);
delay(100);
print("testing addr %lux size %ld\n", mp->param[0], mp->param[1]);
+ if(mp->param[0] == MP2VME(testbuf)){
+ print("no way jose\n");
+ unlock(&hp->busy);
+ error(Egreg);
+ }
+
for(;;){
+for(;;);
print("-");
mem(hp->addr, &hp->addr->ram[(mp->param[0]-0x40000)/sizeof(ulong)], mp->param[1]);
}
M power/trap.c => power/trap.c +1 -2
@@ 438,7 438,6 @@ noted(Ureg **urp, ulong arg0)
}
u->notified = 0;
memmove(*urp, u->ureg, sizeof(Ureg));
- (*urp)->r1 = -1; /* return error from the interrupted call */
switch(arg0){
case NCONT:
splhi();
@@ 572,7 571,7 @@ syscall(Ureg *aur)
u->p->insyscall = 0;
if(r1 == NOTED) /* ugly hack */
noted(&aur, *(ulong*)(sp+BY2WD)); /* doesn't return */
- if(u->nnote){
+ if(u->nnote && r1!=FORK){
ur->r1 = ret;
notify(ur);
}