mm stuff
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
#include "multiboot.h"
|
||||
#include <lib/print.h>
|
||||
#include <lib/stream.h>
|
||||
|
||||
#include <idt.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "memory/mm.h"
|
||||
|
||||
extern void init_idt();
|
||||
extern void init_gdt();
|
||||
extern void init_pic();
|
||||
@@ -12,40 +16,51 @@ extern void init_pit();
|
||||
extern int init_ps2();
|
||||
extern void enable_interrupts();
|
||||
|
||||
extern void load_grub_boot_struct(void);
|
||||
void* page = NULL;
|
||||
|
||||
extern void* grub_boot_struct_ptr;
|
||||
|
||||
void kmain(void)
|
||||
{
|
||||
void kmain(uint32_t magic, multiboot_info* mbi) {
|
||||
extern print_stream_t vga_print_stream;
|
||||
extern print_stream_t* kout;
|
||||
kout = &vga_print_stream;
|
||||
kout->trunc();
|
||||
|
||||
kprint("RockOS booting...\n");
|
||||
kprintf("RockOS booting...\n");
|
||||
|
||||
init_gdt();
|
||||
kprint("GDT set\n");
|
||||
kprintf("GDT set\n");
|
||||
|
||||
init_idt();
|
||||
kprint("IDT set\n");
|
||||
kprintf("IDT set\n");
|
||||
|
||||
init_pic();
|
||||
kprint("PIC initialized\n");
|
||||
kprintf("PIC initialized\n");
|
||||
|
||||
init_pit();
|
||||
kprint("PIT initialized\n");
|
||||
kprintf("PIT initialized\n");
|
||||
|
||||
int result = init_ps2();
|
||||
if (result == -1) {
|
||||
kprint("PS2 init failed\n");
|
||||
kprintf("PS2 init failed\n");
|
||||
return;
|
||||
}
|
||||
kprint("PS2 initialized\n");
|
||||
kprintf("PS2 initialized\n");
|
||||
|
||||
if (!(mbi->flags & (1 << 6))) {
|
||||
return;
|
||||
}
|
||||
|
||||
init_mm((void*)mbi->mmap_addr, mbi->mmap_length);
|
||||
uint32_t mem_size = total_free_memory();
|
||||
kprintf("Total available memory: %d MB\n", mem_size / 1024 / 1024);
|
||||
|
||||
page = alloc_page();
|
||||
kprintf("Allocated page at: 0x%x\n", (uint32_t)page);
|
||||
|
||||
free_page(page);
|
||||
kprintf("Freed page");
|
||||
|
||||
enable_interrupts();
|
||||
kprint("Interrupts enabled\n");
|
||||
kprintf("Interrupts enabled\n");
|
||||
|
||||
while(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user