From 9b2a78fa52249ab481493550490aa5f37872dcf6 Mon Sep 17 00:00:00 2001 From: aqua Date: Sat, 10 Dec 2022 20:56:57 +0200 Subject: Rewrite drivers/uart and drivers/vga in cpp --- src/Makefile | 2 +- src/kernel.c | 54 ----------------------------------------------------- src/kernel.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 55 deletions(-) delete mode 100644 src/kernel.c create mode 100644 src/kernel.cpp (limited to 'src') diff --git a/src/Makefile b/src/Makefile index de59cfb..637f9a1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ include ../Makefile.config -kernel.SRCS := multiboot2.c mmap.c kernel.c mem/vmm.c +kernel.SRCS := multiboot2.c mmap.c kernel.cpp mem/vmm.c kernel.OBJS := conf.h include ../rules.mk diff --git a/src/kernel.c b/src/kernel.c deleted file mode 100644 index b8432a8..0000000 --- a/src/kernel.c +++ /dev/null @@ -1,54 +0,0 @@ -//===================================================================== -// glitch kernel -// spdx-license-identifier: ISC -// description: kernel entry point -//===================================================================== - -#include "conf.h" -#include "devices/keyboard.h" -#include "devices/mouse.h" -#include "devices/pic.h" -#include "devices/ps2_controller.h" -#include "devices/uart.h" -#include "devices/vga.h" -#include "mem.h" -#include -#include - -FILE *stdin; -FILE *stdout; -FILE *stderr; - -void kmain() { - stderr = uart_init(COM1); - stdout = vga_init(vmm_map(0xb8000, 0xc03ff000)); - - printf("glitch [version " VERSION "] [" CC "]\n"); - fprintf(stderr, "glitch [version " VERSION "] [" CC "]\n"); - { - char vendor[13] = {'\0'}; - unsigned int eax; - __get_cpuid(0, &eax, (unsigned int *)vendor, (unsigned int *)(vendor + 8), (unsigned int *)(vendor + 4)); - struct CPUVersion v; - __get_cpuid(1, (unsigned int *)&v, &eax, &eax, &eax); - printf("CPU: %s family %u model %u stepping %u\n", vendor, family(v), model(v), v.stepping); - fprintf(stderr, "CPU: %s family %u model %u stepping %u\n", vendor, family(v), model(v), v.stepping); - } - - pic_init(); - - ps2_ctrl_init(); - ps2_keyboard_init(); - mouse_init(); - - pic_enable(); - printf("interrupts enabled\n"); - - /* - alloc4M(); - char *c = (char *)0xc0700000; - if (*c == 0) printf("c is 0\r\n"); - */ - - while (1) {} -} diff --git a/src/kernel.cpp b/src/kernel.cpp new file mode 100644 index 0000000..751bcb0 --- /dev/null +++ b/src/kernel.cpp @@ -0,0 +1,59 @@ +//===================================================================== +// glitch kernel +// spdx-license-identifier: ISC +// description: kernel entry point +//===================================================================== + +extern "C" { +#include "conf.h" +#include "mem.h" +#include +#include +#include +#include +#include +#include +} +#include +#include + +FILE *stdin; +FILE *stdout; +FILE *stderr; + +extern "C" void +kmain() +{ + stderr = uart_init(); + vmm_map(0xb8000, 0xc03ff000); + stdout = vga_init((void *)0xc03ff000); + + printf("glitch [version " VERSION "] [" CC "]\n"); + fprintf(stderr, "glitch [version " VERSION "] [" CC "]\n"); + { + char vendor[13] = {'\0'}; + unsigned int eax; + __get_cpuid(0, &eax, (unsigned int *)vendor, (unsigned int *)(vendor + 8), (unsigned int *)(vendor + 4)); + struct CPUVersion v; + __get_cpuid(1, (unsigned int *)&v, &eax, &eax, &eax); + printf("CPU: %s family %u model %u stepping %u\n", vendor, family(v), model(v), v.stepping); + fprintf(stderr, "CPU: %s family %u model %u stepping %u\n", vendor, family(v), model(v), v.stepping); + } + + pic_init(); + + ps2_ctrl_init(); + ps2_keyboard_init(); + mouse_init(); + + pic_enable(); + fprintf(stderr, "interrupts enabled\n"); + + /* + alloc4M(); + char *c = (char *)0xc0700000; + if (*c == 0) printf("c is 0\r\n"); + */ + + while (1) {} +} -- cgit v1.2.1