Rev 820 | Rev 853 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 820 | Rev 852 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | #include <arch/mm/frame.h> |
34 | #include <arch/mm/frame.h> |
35 | #include <mm/frame.h> |
35 | #include <mm/frame.h> |
36 | #include <interrupt.h> |
36 | #include <interrupt.h> |
37 | #include <align.h> |
37 | #include <align.h> |
38 | #include <console/console.h> |
38 | #include <console/console.h> |
- | 39 | #include <console/kconsole.h> |
|
- | 40 | #include <console/cmd.h> |
|
39 | 41 | ||
40 | /* This is a good joke, SGI HAS different types than NT bioses... */ |
42 | /* This is a good joke, SGI HAS different types than NT bioses... */ |
41 | /* Here is the SGI type */ |
43 | /* Here is the SGI type */ |
42 | static char *basetypes[] = { |
44 | static char *basetypes[] = { |
43 | "ExceptionBlock", |
45 | "ExceptionBlock", |
Line 150... | Line 152... | ||
150 | 152 | ||
151 | printf("Memory map:\n"); |
153 | printf("Memory map:\n"); |
152 | 154 | ||
153 | desc = arc_entry->getmemorydescriptor(NULL); |
155 | desc = arc_entry->getmemorydescriptor(NULL); |
154 | while (desc) { |
156 | while (desc) { |
155 | printf("%s: %d (size: %dKB)\n",basetypes[desc->type], |
157 | printf("%s: %d(%P) (size: %dKB)\n",basetypes[desc->type], |
- | 158 | desc->basepage * ARC_FRAME, |
|
156 | desc->basepage * ARC_FRAME, |
159 | desc->basepage * ARC_FRAME, |
157 | desc->basecount*ARC_FRAME/1024); |
160 | desc->basecount*ARC_FRAME/1024); |
158 | desc = arc_entry->getmemorydescriptor(desc); |
161 | desc = arc_entry->getmemorydescriptor(desc); |
159 | } |
162 | } |
160 | } |
163 | } |
Line 170... | Line 173... | ||
170 | arc_entry->write(1, &ch, 1, &cnt); |
173 | arc_entry->write(1, &ch, 1, &cnt); |
171 | interrupts_restore(ipl); |
174 | interrupts_restore(ipl); |
172 | 175 | ||
173 | } |
176 | } |
174 | 177 | ||
- | 178 | static int cmd_reboot(cmd_arg_t *argv) |
|
- | 179 | { |
|
- | 180 | arc_entry->reboot(); |
|
- | 181 | return 0; |
|
- | 182 | } |
|
- | 183 | static cmd_info_t reboot_info = { |
|
- | 184 | .name = "reboot", |
|
- | 185 | .description = "Reboot computer", |
|
- | 186 | .func = cmd_reboot, |
|
- | 187 | .argc = 0 |
|
- | 188 | }; |
|
- | 189 | ||
175 | /** Initialize ARC structure |
190 | /** Initialize ARC structure |
176 | * |
191 | * |
177 | * @return 0 - ARC OK, -1 - ARC does not exist |
192 | * @return 0 - ARC OK, -1 - ARC does not exist |
178 | */ |
193 | */ |
179 | int arc_init(void) |
194 | int arc_init(void) |
Line 187... | Line 202... | ||
187 | arc_putchar('A'); |
202 | arc_putchar('A'); |
188 | arc_putchar('R'); |
203 | arc_putchar('R'); |
189 | arc_putchar('C'); |
204 | arc_putchar('C'); |
190 | arc_putchar('\n'); |
205 | arc_putchar('\n'); |
191 | 206 | ||
- | 207 | /* Add command for resetting the computer */ |
|
- | 208 | cmd_initialize(&reboot_info); |
|
- | 209 | cmd_register(&reboot_info); |
|
- | 210 | ||
192 | return 0; |
211 | return 0; |
193 | } |
212 | } |
194 | 213 | ||
195 | static bool kbd_polling_enabled; |
214 | static bool kbd_polling_enabled; |
196 | static chardev_t console; |
215 | static chardev_t console; |
Line 302... | Line 321... | ||
302 | } |
321 | } |
303 | basesize = ALIGN_DOWN(basesize, FRAME_SIZE); |
322 | basesize = ALIGN_DOWN(basesize, FRAME_SIZE); |
304 | 323 | ||
305 | total += basesize; |
324 | total += basesize; |
306 | 325 | ||
307 | zone_create(ADDR2PFN(base), |
326 | zone_create(ADDR2PFN(base), SIZE2FRAMES(basesize), |
308 | SIZE2FRAMES(ALIGN_DOWN(basesize,FRAME_SIZE)), |
- | |
309 | ADDR2PFN(base),0); |
327 | ADDR2PFN(base), 0); |
310 | } |
328 | } |
311 | desc = arc_entry->getmemorydescriptor(desc); |
329 | desc = arc_entry->getmemorydescriptor(desc); |
312 | } |
330 | } |
313 | 331 | ||
314 | config.memory_size = total; |
332 | config.memory_size = total; |