Skip to content

A bootloader and kernel for the x86_64 architecture, written in x86 assembly and C++ respectively

License

Notifications You must be signed in to change notification settings

JBouron/x86_64-kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

x86_64-kernel

A bootloader and kernel for the x86_64 architecture, written in x86 assembly and C++ respectively.

The two-stage bootloader is 100% hand-written x86 assembly. As of now it is capable of:

  • Initializing the CPU from real-mode all the way to 64-bit mode.
  • Parse the E820 memory map from the BIOS.
  • Read the kernel ELF image from the boot disk (the ELF immediately follows the bootloader's second stage on disk, i.e. no partitioning and no filesystem support).
  • Parse the kernel ELF and load its segments to memory.
  • Jump to the 64-bit kernel entry point.

The C++ kernel is still work in progress. As of now the following are supported:

  • Basic CPU initialization: segmentation, interrupts, paging
  • ACPI table parsing
  • IO-APIC(s)
  • LAPIC
  • Multicore support, including Inter-Processor-Interrupts
  • Processes and context switch, although the scheduler is not yet implemented.

About

A bootloader and kernel for the x86_64 architecture, written in x86 assembly and C++ respectively

Topics

Resources

License

Stars

Watchers

Forks

Languages