1*0c0b2b49SDavid du Colombier /*
2*0c0b2b49SDavid du Colombier * IMPORTANT! DO NOT ADD LIBRARY CALLS TO THIS FILE.
3*0c0b2b49SDavid du Colombier * The entire text image must fit on one page
4*0c0b2b49SDavid du Colombier * (and there's no data segment, so any read/write data must be on the stack).
5*0c0b2b49SDavid du Colombier */
6*0c0b2b49SDavid du Colombier
7*0c0b2b49SDavid du Colombier #include <u.h>
8*0c0b2b49SDavid du Colombier #include <libc.h>
9*0c0b2b49SDavid du Colombier
10*0c0b2b49SDavid du Colombier char cons[] = "#c/cons";
11*0c0b2b49SDavid du Colombier char boot[] = "/boot/boot";
12*0c0b2b49SDavid du Colombier char dev[] = "/dev";
13*0c0b2b49SDavid du Colombier char c[] = "#c";
14*0c0b2b49SDavid du Colombier char e[] = "#e";
15*0c0b2b49SDavid du Colombier char ec[] = "#ec";
16*0c0b2b49SDavid du Colombier char s[] = "#s";
17*0c0b2b49SDavid du Colombier char srv[] = "/srv";
18*0c0b2b49SDavid du Colombier char env[] = "/env";
19*0c0b2b49SDavid du Colombier
20*0c0b2b49SDavid du Colombier void
startboot(char * argv0,char ** argv)21*0c0b2b49SDavid du Colombier startboot(char *argv0, char **argv)
22*0c0b2b49SDavid du Colombier {
23*0c0b2b49SDavid du Colombier char buf[200]; /* keep this fairly large to capture error details */
24*0c0b2b49SDavid du Colombier
25*0c0b2b49SDavid du Colombier /* in case boot is a shell script */
26*0c0b2b49SDavid du Colombier open(cons, OREAD);
27*0c0b2b49SDavid du Colombier open(cons, OWRITE);
28*0c0b2b49SDavid du Colombier open(cons, OWRITE);
29*0c0b2b49SDavid du Colombier bind(c, dev, MAFTER);
30*0c0b2b49SDavid du Colombier bind(ec, env, MAFTER);
31*0c0b2b49SDavid du Colombier bind(e, env, MCREATE|MAFTER);
32*0c0b2b49SDavid du Colombier bind(s, srv, MREPL|MCREATE);
33*0c0b2b49SDavid du Colombier
34*0c0b2b49SDavid du Colombier // write(1, cons, 8);
35*0c0b2b49SDavid du Colombier // for(;;);
36*0c0b2b49SDavid du Colombier
37*0c0b2b49SDavid du Colombier USED(argv0);
38*0c0b2b49SDavid du Colombier exec(boot, argv);
39*0c0b2b49SDavid du Colombier
40*0c0b2b49SDavid du Colombier rerrstr(buf, sizeof buf);
41*0c0b2b49SDavid du Colombier buf[sizeof buf - 1] = '\0';
42*0c0b2b49SDavid du Colombier _exits(buf);
43*0c0b2b49SDavid du Colombier }
44