README.md 1.5 KB

Concepts you may want to Google beforehand: XX

Goal: Fix miscellaneous issues with our code

The OSDev wiki has a section which describes some issues with JamesM's tutorial. Since we followed his tutorial for lessons 18-22 (interrupts through malloc), we'll need to make sure we fix any of the issues before moving on.

  1. Wrong CFLAGS ---------------

We add -ffreestanding when compiling .o files, which includes kernel_entry.o and thus kernel.bin and os-image.bin.

Before, we disabled libgcc (not libc) through the use of -nostdlib and we didn't re-enable it for linking. Since this is tricky, we'll delete -nostdlib

  1. Not setting a stack

  2. kernel.c main() function

Modify kernel/kernel.c and change main() to kernel_main() since gcc recognizes "main" as a special keyword and we don't want to mess with that.

Change boot/kernel_entry.asm to point to the new name accordingly.

To fix the i386-elf-ld: warning: cannot find entry symbol _start; defaulting to 0000000000001000 warning message, add a global _start; and define the _start: label in boot/kernel_entry.asm.

  1. Reinvented datatypes

    to provide size_t

  2. Missing functions

  3. Interrupt handlers

  4. also cli, sti in interrupt handlers

  5. Structs and attributes

  6. Improperly aligned kmalloc