xref: /plan9-contrib/sys/src/nboot/bitsy/imain.c (revision 529c1f209803c78c4f2cda11b13818a57f01c872)
1*529c1f20SDavid du Colombier #include "u.h"
2*529c1f20SDavid du Colombier #include "lib.h"
3*529c1f20SDavid du Colombier #include "fns.h"
4*529c1f20SDavid du Colombier #include "dat.h"
5*529c1f20SDavid du Colombier #include "mem.h"
6*529c1f20SDavid du Colombier 
7*529c1f20SDavid du Colombier void
main(void)8*529c1f20SDavid du Colombier main(void)
9*529c1f20SDavid du Colombier {
10*529c1f20SDavid du Colombier 	void (*f)(void);
11*529c1f20SDavid du Colombier 	ulong *kernel;
12*529c1f20SDavid du Colombier 
13*529c1f20SDavid du Colombier 	print("inflating kernel\n");
14*529c1f20SDavid du Colombier 
15*529c1f20SDavid du Colombier 	kernel = (ulong*)(0xc0200000+20*1024);
16*529c1f20SDavid du Colombier 	if(gunzip((uchar*)0xc0008000, 2*1024*1024, (uchar*)kernel, 512*1024) > 0){
17*529c1f20SDavid du Colombier 		f = (void (*)(void))0xc0008010;
18*529c1f20SDavid du Colombier 		draincache();
19*529c1f20SDavid du Colombier 	} else {
20*529c1f20SDavid du Colombier 		print("inflation failed\n");
21*529c1f20SDavid du Colombier 		f = nil;
22*529c1f20SDavid du Colombier 	}
23*529c1f20SDavid du Colombier 	(*f)();
24*529c1f20SDavid du Colombier }
25*529c1f20SDavid du Colombier 
26*529c1f20SDavid du Colombier void
exit(void)27*529c1f20SDavid du Colombier exit(void)
28*529c1f20SDavid du Colombier {
29*529c1f20SDavid du Colombier 
30*529c1f20SDavid du Colombier 	void (*f)(void);
31*529c1f20SDavid du Colombier 
32*529c1f20SDavid du Colombier 	delay(1000);
33*529c1f20SDavid du Colombier 
34*529c1f20SDavid du Colombier 	print("it's a wonderful day to die\n");
35*529c1f20SDavid du Colombier 	f = nil;
36*529c1f20SDavid du Colombier 	(*f)();
37*529c1f20SDavid du Colombier }
38*529c1f20SDavid du Colombier 
39*529c1f20SDavid du Colombier void
delay(int ms)40*529c1f20SDavid du Colombier delay(int ms)
41*529c1f20SDavid du Colombier {
42*529c1f20SDavid du Colombier 	int i;
43*529c1f20SDavid du Colombier 
44*529c1f20SDavid du Colombier 	while(ms-- > 0){
45*529c1f20SDavid du Colombier 		for(i = 0; i < 1000; i++)
46*529c1f20SDavid du Colombier 			;
47*529c1f20SDavid du Colombier 	}
48*529c1f20SDavid du Colombier }
49