M boot/local.c => boot/local.c +16 -4
@@ 2,18 2,30 @@
#include <libc.h>
#include <../boot/boot.h>
+static char diskname[2*NAMELEN];
static char *disk;
static char *niob;
void
configlocal(Method *mp)
{
+ char *p;
+ int n;
+
+ disk = mp->arg; /* 1st try from config file */
+ if(disk && (niob = strchr(disk, ' '))) /* assign = */
+ *niob++ = 0;
+ if(strncmp(argv0, "dksc(0,", 7) == 0){
+ p = strchr(argv0, ',');
+ n = strtoul(p+1, 0, 10);
+ sprint(diskname, "#w%d/sd%dfs", n, n);
+ disk = diskname;
+ /*print("argv0=\"%s\" --> disk = \"%s\"\n", argv0, disk);/**/
+ }
if(*sys == '/' || *sys == '#')
disk = sys;
- else
- disk = mp->arg;
- if(niob = strchr(disk, ' ')) /* assign = */
- *niob++ = 0;
+ if(disk)
+ setenv("bootdisk", disk);
USED(mp);
}
M carrera/l.s => carrera/l.s +4 -4
@@ 823,9 823,9 @@ TEXT fwblock(SB), $-4 /* fwblock(void*port, void *block, csum) */
fwloop:
MOVV 0(R2), R5
MOVV R5, 0(R1)
- ADDU R5, R3
+ XOR R5, R3
SRLV $32, R5
- ADDU R5, R3
+ XOR R5, R3
ADD $8, R2
SUB $1, R4
@@ 842,9 842,9 @@ TEXT frblock(SB), $-4 /* frblock(void*port, void *block, csum) */
frloop:
MOVV 0(R1), R5
MOVV R5, 0(R2)
- ADDU R5, R3
+ XOR R5, R3
SRLV $32, R5
- ADDU R5, R3
+ XOR R5, R3
ADD $8, R2
SUB $1, R4
M port/qio.c => port/qio.c +2 -3
@@ 371,8 371,7 @@ checkb(b, "qconsume 2");
int
qpass(Queue *q, Block *b)
{
- int s, i, len;
- int dowakeup;
+ int s, i, len, dowakeup;
s = splhi();
@@ 417,7 416,7 @@ qpass(Queue *q, Block *b)
q->bfirst = b;
q->blast = b;
q->len += len;
-checkb(b, "qproduce");
+checkb(b, "qpass");
if(q->state & Qstarve){
q->state &= ~Qstarve;