kern
annotate src/main.c @ 46:b793b8fcba7d
apparently free_phys_page was never tested. the check for double-freeing a page
was inverted.
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 28 Jul 2011 05:33:59 +0300 |
parents | 928b0ebfff4d |
children | f65b348780e3 |
rev | line source |
---|---|
nuclear@1 | 1 #include <stdio.h> |
nuclear@16 | 2 #include "mboot.h" |
nuclear@0 | 3 #include "vid.h" |
nuclear@1 | 4 #include "term.h" |
nuclear@16 | 5 #include "asmops.h" |
nuclear@7 | 6 #include "segm.h" |
nuclear@10 | 7 #include "intr.h" |
nuclear@36 | 8 #include "rtc.h" |
nuclear@33 | 9 #include "timer.h" |
nuclear@27 | 10 #include "mem.h" |
nuclear@16 | 11 #include "vm.h" |
nuclear@16 | 12 |
nuclear@2 | 13 |
nuclear@16 | 14 void kmain(struct mboot_info *mbinf) |
nuclear@0 | 15 { |
nuclear@2 | 16 clear_scr(); |
nuclear@16 | 17 |
nuclear@16 | 18 /* pointless verbal diarrhea */ |
nuclear@16 | 19 if(mbinf->flags & MB_LDRNAME) { |
nuclear@16 | 20 printf("loaded by: %s\n", mbinf->boot_loader_name); |
nuclear@16 | 21 } |
nuclear@16 | 22 if(mbinf->flags & MB_CMDLINE) { |
nuclear@16 | 23 printf("kernel command line: %s\n", mbinf->cmdline); |
nuclear@16 | 24 } |
nuclear@16 | 25 |
nuclear@2 | 26 puts("kernel starting up"); |
nuclear@2 | 27 |
nuclear@7 | 28 init_segm(); |
nuclear@10 | 29 init_intr(); |
nuclear@7 | 30 |
nuclear@31 | 31 |
nuclear@26 | 32 /* initialize the physical memory manager */ |
nuclear@26 | 33 init_mem(mbinf); |
nuclear@26 | 34 /* initialize paging and the virtual memory manager */ |
nuclear@26 | 35 init_vm(); |
nuclear@19 | 36 |
nuclear@40 | 37 /* initialize the timer and RTC */ |
nuclear@40 | 38 init_timer(); |
nuclear@40 | 39 init_rtc(); |
nuclear@40 | 40 |
nuclear@27 | 41 /* initialization complete, enable interrupts */ |
nuclear@27 | 42 enable_intr(); |
nuclear@27 | 43 |
nuclear@31 | 44 |
nuclear@2 | 45 for(;;) { |
nuclear@43 | 46 halt_cpu(); |
nuclear@2 | 47 } |
nuclear@0 | 48 } |