diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..47302fe --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +all: os-image + +run: all + qemu bin/os-image + +os-image: bin/bootloader.bin bin/kernel.bin + cat $^ > bin/os-image + +kernel.bin: bin/kernel_entry.o bin/kernel.o + ld -o kernel.bin -Ttext 0x1000 $^ --oformat binary + +kernel.o : src/kernel/kernel.c + gcc -ffreestanding -c $< -o $@ + +kernel_entry.o : src/kernel/kernel_entry.asm + nasm $< -f elf -o $@ + +bootloader.bin : src/bootloader/bootloader.asm + nasm $< -o $@ + +clean: + rm -fr bin/*.bin bin/*.dis bin/*.o bin/os-image bin/*.map + +kernel.dis : bin/kernel.bin + ndisasm -b 32 $< > $@ diff --git a/src/kernel/kernel_entry.asm b/src/kernel/kernel_entry.asm new file mode 100644 index 0000000..3d2fa88 --- /dev/null +++ b/src/kernel/kernel_entry.asm @@ -0,0 +1,5 @@ +[bits 32] +[extern main] + +call main +jmp $