summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-08-07 13:20:26 +0200
committerMichal Idziorek <m.i@gmx.at>2014-08-07 13:20:26 +0200
commit0246dfba3efac4c20e73e83c229219d3c136ff40 (patch)
tree3cb1ffc62d78f054ac8f82998e1da518294488b2 /kernel
parentc8a976eced96f3af4a17d756c34cdd566ffa8a9e (diff)
getting memory map from bios and passing to kernel
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 94a5b9f..7c5f982 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -48,13 +48,84 @@ void kernel_main()
}
+
//0xA5000
scr_put_hex((uint32_t)prober>>16);
scr_put_hex((uint32_t)prober&0xffff);
scr_put_string_nl(" finished!");
//
+
*/
+ uint16_t *memmap=0x7c00+0x120;
+ uint32_t avail_mem=0;
+
+ //print memory map:
+
+ while(1)
+ {
+ if(memmap[8]==0)break;
+ if(memmap[8]==1)
+ {
+ avail_mem+=memmap[4]+(memmap[5]<<16);
+ }
+ //bytes: 8 8 4 4//
+ //scr_put_hex(memmap[3]);
+ //scr_put_string(" ");
+ //scr_put_hex(memmap[2]);
+ //scr_put_string(" ");
+ scr_put_hex(memmap[1]);
+ scr_put_string(" ");
+ scr_put_hex(memmap[0]);
+ scr_put_string(" ");
+// scr_put_hex(memmap[4]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[5]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[6]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[7]);
+
+
+ scr_put_string(" - ");
+// scr_put_hex(memmap[8]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[9]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[10]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[11]);
+// scr_put_string(" ");
+ //scr_put_hex(memmap[7]);
+ //scr_put_string(" ");
+ //scr_put_hex(memmap[6]);
+ //scr_put_string(" ");
+ scr_put_hex(memmap[5]);
+ scr_put_string(" ");
+ scr_put_hex(memmap[4]);
+
+ scr_put_string(" : ");
+ scr_put_hex(memmap[8]);
+// scr_put_string(" ");
+// scr_put_hex(memmap[9]);
+
+
+ scr_put_string_nl("");
+
+ memmap+=12;
+ }
+
+
+ scr_put_string("Total Available Mem: ");
+ scr_put_hex(avail_mem>>16);
+ scr_put_string(" ");
+ scr_put_hex(avail_mem&0xffff);
+ scr_put_string_nl(" byte");
+ scr_put_string_nl("");
+
+
+
+
// init and interrupt decriptor table
int_init(0x08);