OSDN Git Service

DMAドライバ. DrFSマイナーチェンジ
[vaneos/DivergeMirror.git] / kernel / mbootinfo.c
1 /*
2         mbootinfo.c
3         MultiBoot Info
4         (C) 2014-2015 VOSystems.
5 */
6
7 #include<Diverge/multiboot.h>
8 #include<Diverge/diverge.h>
9
10 struct pc_info pc;
11
12 void init_MultiBoot(unsigned long magic, unsigned long addr)
13 {
14         multiboot_info_t *mbi = (multiboot_info_t *) addr;
15         
16         pc.cmd=mbi->cmdline;
17         MB_memory(mbi, magic);
18         MB_apm(mbi);
19 }
20
21 void MB_memory(multiboot_info_t* mbi,unsigned long magic)
22 {
23         printTASK("Loading Memory Info");
24         if(magic!=MULTIBOOT_BOOTLOADER_MAGIC){
25                 printFAIL("Loading Memory Info");
26                 
27         }else{
28                 char meminfo[100];
29                 printOK("Loading Memory Info");
30                 pc.mem.low_size=mbi->mem_lower;
31                 pc.mem.up_size=mbi->mem_upper;
32                 pc.mem.size=(pc.mem.low_size + pc.mem.up_size)/1024;
33                 ksprintf(meminfo,"Total Memory = %d MiB",pc.mem.size);
34                 printINFO(meminfo);
35         }
36 }
37
38 void MB_apm(multiboot_info_t* mbi)
39 {
40         printTASK("Loading APM Info");
41         struct apm_info* apm=(struct apm_info*)mbi->apm_table;
42         pc.apm.version          = apm->version;
43         pc.apm.cs32                     = apm->cs32;
44         pc.apm.offset           = apm->offset;
45         pc.apm.cs16                     = apm->cs16;
46         pc.apm.ds16                     = apm->ds16;
47         pc.apm.flag                     = apm->flag;
48         pc.apm.cs32_size        = apm->cs32_size;
49         pc.apm.cs16_size        = apm->cs16_size;
50         pc.apm.ds_size          = apm->ds_size;
51         printOK("Loading APM Info");
52 }