shithub: riscv

Download patch

ref: b4f2bf77b3710306bf1965201d526154c9dbddb7
parent: 545fc5e329dd80e766b4a1001a83b80855af877b
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sat May 14 13:05:51 EDT 2011

fix overlapping arguments with Tos for initcode process

--- a/sys/src/9/pc/main.c
+++ b/sys/src/9/pc/main.c
@@ -4,6 +4,7 @@
 #include	"dat.h"
 #include	"fns.h"
 #include	"io.h"
+#include	"tos.h"
 #include	"ureg.h"
 #include	"init.h"
 #include	"pool.h"
@@ -289,10 +290,10 @@
 	char *cp = BOOTLINE;
 	char buf[64];
 
-	sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD;
+	sp = (uchar*)base + BY2PG - sizeof(Tos);
 
 	ac = 0;
-	av[ac++] = pusharg("/386/9dos");
+	av[ac++] = pusharg("boot");
 
 	/* when boot is changed to only use rc, this code can go away */
 	cp[BOOTLINELEN-1] = 0;
@@ -313,9 +314,10 @@
 	sp -= (ac+1)*sizeof(sp);
 	lsp = (uchar**)sp;
 	for(i = 0; i < ac; i++)
-		*lsp++ = av[i] + ((USTKTOP - BY2PG) - (ulong)base);
-	*lsp = 0;
-	sp += (USTKTOP - BY2PG) - (ulong)base - sizeof(ulong);
+		lsp[i] = av[i] + ((USTKTOP - BY2PG) - (ulong)base);
+	lsp[i] = 0;
+	sp += (USTKTOP - BY2PG) - (ulong)base;
+	sp -= BY2WD;
 }
 
 char*