commit d4734645afb4add72279296e598ce89656ee7eb0
parent df4f91cae483f2f3e04066c85e97636009428f52
Author: Jesus Galan Lopez (yiyus) <yiyu.jgl@gmail.com>
Date:   Sun,  5 Sep 2010 13:42:36 +0200
generate bootcode.9 running mk from src/9vx/boot
Diffstat:
7 files changed, 77 insertions(+), 0 deletions(-)
diff --git a/.hgignore b/.hgignore
@@ -26,6 +26,7 @@ src/vxlinux/vxlinux
 src/9vx/9vx
 src/9vx/boot/*.[ch]
 src/9vx/boot/*.orig
+src/9vx/boot/bootcode.9
 src/9vx/bootcode.S
 src/9vx/fossil.S
 src/9vx/venti.S
diff --git a/src/9vx/boot/aux.c.ed b/src/9vx/boot/aux.c.ed
@@ -0,0 +1,3 @@
+/exits/-1;/exits/c
+	exits(smprint("boot: %s: %s\n", s, buf));
+.
diff --git a/src/9vx/boot/boot.c.ed b/src/9vx/boot/boot.c.ed
@@ -0,0 +1,14 @@
+/^$/a
+char*	localroot;
+.
+/fd = \(\*mp->connect\)/a
+	if(localroot){
+		bind(localroot, "/", MAFTER);
+		srvcreate("boot", fd);
+		goto Init;
+	}
+.
+/cmd = getenv/i
+Init:
+	cpuflag = (strcmp(getenv("service"), "cpu") == 0);
+.
diff --git a/src/9vx/boot/bootip.c.ed b/src/9vx/boot/bootip.c.ed
@@ -0,0 +1 @@
+,g/w->msg/s,[^	],// &,
diff --git a/src/9vx/boot/local.c.ed b/src/9vx/boot/local.c.ed
@@ -0,0 +1,31 @@
+/fatal\("open \/net\/ipifc\/clone for loopback"\)/s,[^	],// &,
+a
+			return;
+.
+/^connectlocal\(void\)/-1i
+int
+connectlocalroot(void)
+{
+	int fd;
+	char buf[1024];
+
+	snprint(buf, sizeof buf, "%s/%s/bin/rc", disk, cputype);
+	if(stat(buf, statbuf, sizeof statbuf) < 0)
+		return -1;
+	localroot = disk;
+
+	/* create working fd for /srv/boot */
+	fd = open("#~/mntloop", ORDWR);
+	if(fd < 0){
+		print("open #~/mntloop: %r\n");
+		return -1;
+	}
+	write(fd, disk, strlen(disk));
+	return fd;
+}
+
+.
+/fd = connectlocal/i
+	if((fd = connectlocalroot()) < 0)
+.
+/fd = connectlocalkfs/s,[^	],// &,
diff --git a/src/9vx/boot/mkfile b/src/9vx/boot/mkfile
@@ -0,0 +1,27 @@
+SRC9=/sys/src/9
+BOOT=$SRC9/boot
+CWD=`{pwd}
+
+EDFILES=`{ls *.ed}
+SRCFILES=${EDFILES:%.ed=%}
+
+bootcode.9: files
+	cd $SRC9 ;\
+	bind -bc $CWD $SRC9/boot; \
+	cd pc; \
+	mk bootpcf.out 'CONF=pcf' && \
+		mv bootpcf.out $CWD/bootcode.9
+	unmount $CWD $SRC9/boot
+
+files:V: $SRCFILES
+
+([^/]+)\.([ch]):R: \1.\2.ed \1.\2.orig
+	{	cat $stem1.$stem2.ed; \
+		echo w $stem1.$stem2; \
+	} | ed - $stem1.$stem2.orig
+
+%.orig: $BOOT/%
+	cp $BOOT/$stem $stem.orig
+
+clean:V:
+	rm -f bootcode.9 *.[ch] *.orig
diff --git a/src/9vx/bootcode.9 b/src/9vx/bootcode.9
Binary files differ.