From 030fb539854bd7ae2b2c9e01be0a64ea37f64452 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sun, 27 Oct 2013 15:30:25 +0100 Subject: [PATCH] Load the C++ kernel directly after the micro kernel --- Makefile | 3 ++- addresses.bash | 16 ++++++++++++++ fill.bash | 2 +- micro_kernel.g | Bin 0 -> 59200 bytes src/addresses.hpp | 4 ++++ src/bootloader/bootloader.asm | 2 +- src/commands.asm | 4 +--- src/kernel.cpp | 38 +++++++++++++++++++++++++++------- src/micro_kernel.asm | 9 ++++++-- 9 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 addresses.bash create mode 100644 micro_kernel.g create mode 100644 src/addresses.hpp diff --git a/Makefile b/Makefile index fe1ee96d..3d2b5407 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,10 @@ bootloader.bin: src/bootloader/bootloader.asm 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++ -O2 -std=c++11 -Wall -Wextra -fno-exceptions -fno-rtti -ffreestanding -c src/kernel.cpp -o kernel.o + g++ -masm=intel -O2 -std=c++11 -Wall -Wextra -fno-exceptions -fno-rtti -ffreestanding -c 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/addresses.bash b/addresses.bash new file mode 100644 index 00000000..8a72460e --- /dev/null +++ b/addresses.bash @@ -0,0 +1,16 @@ +#!/bin/bash + +function generate_address { + address=`readelf --symbols micro_kernel.g | grep $1 | xargs | cut -d ' ' -f 2` + hex_address="0x$address" + hex_offset=`echo "obase=16; $(($hex_address+0x1000))" | bc` + + echo "#define asm_$1 0x$hex_offset" >> src/addresses.hpp +} + +echo "#ifndef ADDRESSES_H" > src/addresses.hpp +echo "#define ADDRESSES_H" >> src/addresses.hpp + +generate_address "register_irq_handler" + +echo "#endif" >> src/addresses.hpp diff --git a/fill.bash b/fill.bash index 6c4db229..ba34af2f 100644 --- a/fill.bash +++ b/fill.bash @@ -1,5 +1,5 @@ #!/bin/bash size=`stat -c%s kernel.bin` -let filler_size=512-$size +let filler_size=1024-$size dd if=/dev/zero of=filler.bin bs=1 count=$filler_size diff --git a/micro_kernel.g b/micro_kernel.g new file mode 100644 index 0000000000000000000000000000000000000000..5b210603216c6a4b560085eeb58f629e77eb319b GIT binary patch literal 59200 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 "); - //TODO Register keyword handler + asm ("mov r8, 1; mov r9, %0; call %1" + : + : "i" (&keyboard_handler), "i" (asm_register_irq_handler) + : "r8", "r9" + ); + + //while(true); return; } -typedef unsigned int uint8_t __attribute__((__mode__(__QI__))); -typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__))); - enum vga_color { BLACK = 0, BLUE = 1, @@ -32,9 +59,6 @@ enum vga_color { WHITE = 15, }; -long current_line = 0; -long current_column = 0; - uint8_t make_color(vga_color fg, vga_color bg){ return fg | bg << 4; } diff --git a/src/micro_kernel.asm b/src/micro_kernel.asm index 5e35b84e..2b0f1337 100644 --- a/src/micro_kernel.asm +++ b/src/micro_kernel.asm @@ -1,5 +1,8 @@ [BITS 16] + +%ifndef DEBUG [ORG 0x1000] +%endif jmp _start @@ -98,11 +101,13 @@ lm_start: call install_timer - ; Enter the shell - call shell_start + call 0x5000 jmp $ + ; Enter the shell + ;call shell_start + ; Includes %include "src/utils/macros.asm"