diff --git a/Makefile b/Makefile index 3d2b5407..1b30d9ac 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,8 @@ micro_kernel.bin: $(KERNEL_SRC) $(KERNEL_UTILS_SRC) nasm -w+all -f bin -o micro_kernel.bin src/micro_kernel.asm nasm -D DEBUG -g -w+all -f elf64 -o micro_kernel.g src/micro_kernel.asm -kernel.o: src/kernel.cpp - g++ -masm=intel -O2 -std=c++11 -Wall -Wextra -fno-exceptions -fno-rtti -ffreestanding -c src/kernel.cpp -o kernel.o +kernel.o: kernel/src/kernel.cpp + g++ -masm=intel -Ikernel/include/ -O2 -std=c++11 -Wall -Wextra -fno-exceptions -fno-rtti -ffreestanding -c kernel/src/kernel.cpp -o kernel.o kernel.bin: kernel.o g++ -std=c++11 -T linker.ld -o kernel.bin.o -ffreestanding -O2 -nostdlib kernel.o diff --git a/src/addresses.hpp b/kernel/include/addresses.hpp similarity index 100% rename from src/addresses.hpp rename to kernel/include/addresses.hpp diff --git a/src/kernel.cpp b/kernel/src/kernel.cpp similarity index 97% rename from src/kernel.cpp rename to kernel/src/kernel.cpp index b27ac163..ed2d2bc8 100644 --- a/src/kernel.cpp +++ b/kernel/src/kernel.cpp @@ -16,15 +16,12 @@ void out_byte (uint16_t _port, uint8_t _data){ __asm__ __volatile__ ("out %0, %1" : : "dN" (_port), "a" (_data)); } -void __attribute__((naked)) keyboard_handler(){ +void keyboard_handler(){ in_byte(0x60); k_print("key"); } -long current_line = 0; -long current_column = 0; - extern "C" void __attribute__ ((section ("main_section"))) kernel_main(){ k_print("thor> "); @@ -40,6 +37,9 @@ void __attribute__ ((section ("main_section"))) kernel_main(){ return; } +long current_line = 0; +long current_column = 0; + enum vga_color { BLACK = 0, BLUE = 1, diff --git a/micro_kernel.g b/micro_kernel.g index 5b210603..f16a303b 100644 Binary files a/micro_kernel.g and b/micro_kernel.g differ diff --git a/src/micro_kernel.asm b/src/micro_kernel.asm index 2b0f1337..8fc0f3e0 100644 --- a/src/micro_kernel.asm +++ b/src/micro_kernel.asm @@ -93,8 +93,10 @@ lm_start: ; Install ISRs call install_isrs + ; Remap IRQs with wrong numbers call remap_irqs + ; Install all IRQs call install_irqs sti