1 typedef unsigned int dev_t;
2 typedef unsigned int kdev_t;
3 
to_kdev_t(int dev)4 static inline kdev_t to_kdev_t(int dev)
5 {
6 	int major, minor;
7 
8 	if (sizeof(kdev_t) == 16)
9 		return (kdev_t)dev;
10 	major = (dev >> 8);
11 	minor = (dev & 0xff);
12 	return ((( major ) << 22 ) | (  minor )) ;
13 
14 }
15 
do_mknod(const char * filename,int mode,kdev_t dev)16 void do_mknod(const char * filename, int mode, kdev_t dev)
17 {
18 	if (dev==0x15800078)
19 		exit(0);
20 	else
21 		abort();
22 }
23 
24 
getname(const char * filename)25 char * getname(const char * filename)
26 {
27 	register unsigned int a1,a2,a3,a4,a5,a6,a7,a8,a9;
28 	a1 = (unsigned int)(filename) *5 + 1;
29 	a2 = (unsigned int)(filename) *6 + 2;
30 	a3 = (unsigned int)(filename) *7 + 3;
31 	a4 = (unsigned int)(filename) *8 + 4;
32 	a5 = (unsigned int)(filename) *9 + 5;
33 	a6 = (unsigned int)(filename) *10 + 5;
34 	a7 = (unsigned int)(filename) *11 + 5;
35 	a8 = (unsigned int)(filename) *12 + 5;
36 	a9 = (unsigned int)(filename) *13 + 5;
37 	return (char *)(a1*a2+a3*a4+a5*a6+a7*a8+a9);
38 }
39 
sys_mknod(const char * filename,int mode,dev_t dev)40 int sys_mknod(const char * filename, int mode, dev_t dev)
41 {
42 	int error;
43 	char * tmp;
44 
45 	tmp = getname(filename);
46 	error = ((long)( tmp )) ;
47 	do_mknod(tmp,mode,to_kdev_t(dev));
48 	return error;
49 }
50 
main(void)51 int main(void)
52 {
53 	if (sizeof (int) != 4)
54 	  exit (0);
55 
56 	return sys_mknod("test",1,0x12345678);
57 }
58