This source file includes following definitions.
- start
- _rtt
- domap
- seterm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #include <sys/param.h>
32 #include <sys/types.h>
33 #include <sys/mman.h>
34 #include <sys/syscall.h>
35 #include <termios.h>
36 #include "libsa.h"
37 #include <lib/libsa/unixdev.h>
38
39 void start(void) asm("start");
40 void _rtt(void);
41 extern int boot(dev_t);
42 static void domap(void);
43 static void seterm(void);
44
45 void
46 start()
47 {
48 domap();
49 seterm();
50 uexit(boot(0));
51 }
52
53 void
54 _rtt()
55 {
56 uexit(1);
57 }
58
59 #define ummap(a,l,p,f,fd,o) (caddr_t)syscall((quad_t)SYS_mmap,a,l,p,f,fd,0,o)
60
61 static void
62 domap()
63 {
64 extern char end[];
65 register caddr_t p = (caddr_t)(((u_long)end + PGOFSET) & ~PGOFSET);
66
67
68 if ( (p = ummap(p, 32*NBPG, PROT_READ|PROT_WRITE,
69 MAP_FIXED|MAP_ANON, -1, 0)) == (caddr_t)-1) {
70 printf("mmap failed: %d\n", errno);
71 uexit(1);
72 }
73 #ifdef DEBUG
74 else
75 printf("mmap==%p\n", p);
76 #endif
77
78
79 if ( (p = ummap(0x100000, 0xf00000, PROT_READ|PROT_WRITE,
80 MAP_FIXED|MAP_ANON, -1, 0)) == (caddr_t)-1) {
81 printf("mmap failed: %d\n", errno);
82 uexit(1);
83 }
84 #ifdef DEBUG
85 else
86 printf("mmap==%p\n", p);
87 #endif
88
89 }
90
91 void
92 seterm()
93 {
94 struct termios tc;
95
96 if (uioctl(0, TIOCGETA, (char *)&tc) < 0) {
97 printf("cannot get tty\n");
98 uexit(1);
99 }
100
101 tc.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
102 tc.c_oflag &= ~OPOST;
103 tc.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
104 tc.c_cflag &= ~(CSIZE|PARENB);
105 tc.c_cflag |= CS8;
106
107 if (uioctl(0, TIOCSETA, (char *)&tc) < 0) {
108 printf("cannot set tty\n");
109 uexit(1);
110 }
111 }