@@ 810,16 810,22 @@ TEXT fwblock(SB), $-4 /* fwblock(void*port, void *block, csum) */
SLLV $32, R6
SRLV $32, R6 /* zero extend */
- MOVW $32, R4
+ MOVW $16, R4
fwloop:
MOVV 0(R2), R5
MOVV R5, 0(R1)
XOR R5, R6
- MOVV 8(R2), R5
- MOVV R5, 0(R1)
- XOR R5, R6
-
- ADD $16, R2
+ MOVV 8(R2), R7
+ MOVV R7, 0(R1)
+ XOR R7, R6
+ MOVV 16(R2), R8
+ MOVV R8, 0(R1)
+ XOR R8, R6
+ MOVV 24(R2), R9
+ MOVV R9, 0(R1)
+ XOR R9, R6
+
+ ADD $32, R2
SUB $1, R4
BNE R4, fwloop
@@ 834,15 840,22 @@ TEXT frblock(SB), $-4 /* frblock(void*port, void *block, csum) */
SLLV $32, R6
SRLV $32, R6 /* zero extend */
- MOVW $32, R4
+ MOVW $16, R4
frloop:
MOVV 0(R1), R5
MOVV R5, 0(R2)
XOR R5, R6
- MOVV 0(R1), R5
- MOVV R5, 8(R2)
- XOR R5, R6
- ADD $16, R2
+ MOVV 0(R1), R7
+ MOVV R7, 8(R2)
+ XOR R7, R6
+ MOVV 0(R1), R8
+ MOVV R8, 16(R2)
+ XOR R8, R6
+ MOVV 0(R1), R9
+ MOVV R9, 24(R2)
+ XOR R9, R6
+
+ ADD $32, R2
SUB $1, R4
BNE R4, frloop
@@ 544,8 544,6 @@ notify(Ureg *ur)
memmove((char*)sp, up->note[0].msg, ERRLEN);
sp -= 3*BY2WD;
*(ulong*)(sp+2*BY2WD) = sp+3*BY2WD; /* arg 2 is string */
- up->svr1 = ur->r1; /* save away r1 */
- up->svhr1 = ur->hr1; /* save away r1 */
ur->r1 = (long)up->ureg; /* arg 1 is ureg* */
ur->hr1 = 0;
if(ur->r1 < 0)
@@ 588,8 586,6 @@ noted(Ureg **urp, ulong arg0)
}
memmove(*urp, up->ureg, sizeof(Ureg));
- (*urp)->r1 = up->svr1;
- (*urp)->hr1 = up->svhr1;
switch(arg0) {
case NCONT:
if(!okaddr(nur->pc, 1, 0) || !okaddr(nur->usp, BY2WD, 0)){
@@ 542,7 542,7 @@ keyread(char *a, int n, long offset)
{
if(n<DESKEYLEN || offset != 0)
error(Ebadarg);
- if(!iseve())
+ if(!cpuserver || !iseve())
error(Eperm);
memmove(a, evekey, DESKEYLEN);
return DESKEYLEN;