diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-08-07 13:20:26 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-08-07 13:20:26 +0200 |
| commit | 0246dfba3efac4c20e73e83c229219d3c136ff40 (patch) | |
| tree | 3cb1ffc62d78f054ac8f82998e1da518294488b2 /kernel/kernel.c | |
| parent | c8a976eced96f3af4a17d756c34cdd566ffa8a9e (diff) | |
getting memory map from bios and passing to kernel
Diffstat (limited to 'kernel/kernel.c')
| -rw-r--r-- | kernel/kernel.c | 71 |
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); |
