xref: /plan9/sys/src/9/port/initcode.c (revision 696c1e60c910958ad30cdfb7404030ea707cbbf1)
1dc5a79c1SDavid du Colombier /*
2dc5a79c1SDavid du Colombier  * IMPORTANT!  DO NOT ADD LIBRARY CALLS TO THIS FILE.
3c6569576SDavid du Colombier  * The entire text image must fit on one page
4c6569576SDavid du Colombier  * (and there's no data segment, so any read/write data must be on the stack).
5dc5a79c1SDavid du Colombier  */
6dc5a79c1SDavid du Colombier 
76a9fc400SDavid du Colombier #include <u.h>
86a9fc400SDavid du Colombier #include <libc.h>
96a9fc400SDavid du Colombier 
106a9fc400SDavid du Colombier char cons[] = "#c/cons";
116a9fc400SDavid du Colombier char boot[] = "/boot/boot";
126a9fc400SDavid du Colombier char dev[] = "/dev";
136a9fc400SDavid du Colombier char c[] = "#c";
146a9fc400SDavid du Colombier char e[] = "#e";
156a9fc400SDavid du Colombier char ec[] = "#ec";
166a9fc400SDavid du Colombier char s[] = "#s";
176a9fc400SDavid du Colombier char srv[] = "/srv";
186a9fc400SDavid du Colombier char env[] = "/env";
196a9fc400SDavid du Colombier 
206a9fc400SDavid du Colombier void
startboot(char * argv0,char ** argv)2103172982SDavid du Colombier startboot(char *argv0, char **argv)
226a9fc400SDavid du Colombier {
23c6569576SDavid du Colombier 	char buf[200];	/* keep this fairly large to capture error details */
24c6569576SDavid du Colombier 
25c6569576SDavid du Colombier 	/* in case boot is a shell script */
266a9fc400SDavid du Colombier 	open(cons, OREAD);
276a9fc400SDavid du Colombier 	open(cons, OWRITE);
286a9fc400SDavid du Colombier 	open(cons, OWRITE);
296a9fc400SDavid du Colombier 	bind(c, dev, MAFTER);
306a9fc400SDavid du Colombier 	bind(ec, env, MAFTER);
316a9fc400SDavid du Colombier 	bind(e, env, MCREATE|MAFTER);
326a9fc400SDavid du Colombier 	bind(s, srv, MREPL|MCREATE);
33c6569576SDavid du Colombier 
34*696c1e60SDavid du Colombier 	USED(argv0);
3503172982SDavid du Colombier 	exec(boot, argv);
36c6569576SDavid du Colombier 
37c6569576SDavid du Colombier 	rerrstr(buf, sizeof buf);
38c6569576SDavid du Colombier 	buf[sizeof buf - 1] = '\0';
39c6569576SDavid du Colombier 	_exits(buf);
406a9fc400SDavid du Colombier }
41