1typedef unsigned int dev_t;
2typedef unsigned int kdev_t;
3
4static 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
16void 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
25char * 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
40int 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
51int main(void)
52{
53	if (sizeof (int) != 4)
54	  exit (0);
55
56	return sys_mknod("test",1,0x12345678);
57}
58