console vga stuff
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include "lib/font.h"
|
||||
#include "multiboot.h"
|
||||
#include "interrupts.h"
|
||||
#include "gdt.h"
|
||||
@@ -22,6 +23,8 @@
|
||||
#include <drivers/vga/vga.h>
|
||||
#include <drivers/cpio/cpio.h>
|
||||
#include <drivers/devfs/devfs.h>
|
||||
#include <drivers/serial/serial.h>
|
||||
#include <drivers/console/console.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
@@ -29,6 +32,8 @@
|
||||
extern char __kernel_start;
|
||||
extern char __kernel_end;
|
||||
|
||||
#define SERIAL_DBG
|
||||
|
||||
extern uint32_t page_directory[1024];
|
||||
void* kernel_cr3 = page_directory;
|
||||
|
||||
@@ -95,37 +100,41 @@ void load_root_program(const char* path) {
|
||||
flush_tlb();
|
||||
}
|
||||
|
||||
void kmain(uint32_t magic, multiboot_info* mbi) {
|
||||
void kmain(multiboot_info* mbi) {
|
||||
disable_interrupts();
|
||||
|
||||
vga_init(mbi->framebuffer_addr,
|
||||
mbi->framebuffer_width,
|
||||
mbi->framebuffer_height,
|
||||
mbi->framebuffer_pitch,
|
||||
mbi->framebuffer_bpp);
|
||||
|
||||
if (magic != 0x2BADB002) {
|
||||
return;
|
||||
}
|
||||
init_serial();
|
||||
|
||||
// need mmap and fb info
|
||||
if (!(mbi->flags & (1 << 6)) || !(mbi->flags & (1 << 12))) {
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
uint32_t mmap_virtual_addr = mbi->mmap_addr + 0xC0000000;
|
||||
init_pmm((void*)mmap_virtual_addr, mbi->mmap_length);
|
||||
kprintf("memory detection complete. total free memory: %dMB\n", total_free_memory() / 1024 / 1024);
|
||||
parse_multiboot_modules((uint32_t)mbi);
|
||||
|
||||
uint32_t vga_fb_address = mbi->framebuffer_addr;
|
||||
uint32_t vga_fb_width = mbi->framebuffer_width;
|
||||
uint32_t vga_fb_height = mbi->framebuffer_height;
|
||||
uint32_t vga_fb_pitch = mbi->framebuffer_pitch;
|
||||
uint32_t vga_fb_bpp = mbi->framebuffer_bpp;
|
||||
|
||||
init_gdt();
|
||||
init_idt();
|
||||
init_pic();
|
||||
init_pit();
|
||||
|
||||
|
||||
uint32_t mmap_virtual_addr = mbi->mmap_addr + 0xC0000000;
|
||||
init_pmm((void*)mmap_virtual_addr, mbi->mmap_length);
|
||||
init_page_tables();
|
||||
|
||||
parse_multiboot_modules((uint32_t)mbi);
|
||||
vga_init(vga_fb_address,
|
||||
vga_fb_width,
|
||||
vga_fb_height,
|
||||
vga_fb_pitch,
|
||||
vga_fb_bpp);
|
||||
|
||||
console_init();
|
||||
set_console_font("/fonts/cp850-8x16.psf");
|
||||
|
||||
kprintf("basic initializations complete\n");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user