Booting an x86 SMP system

The microkernel itself contains very little hardware- or system-specific code. The code that determines the capabilities of the system is isolated in a startup program, which is responsible for initializing the system, determining available memory, etc. Information gathered is placed into a memory table available to the microkernel and to all processes (on a read-only basis).

The startup-x86 program is designed to work on systems that support the Unified Extensible Firmware Interface. This startup program is responsible for:
  • determining the number of processors
  • determining the address of the local and I/O APIC
  • initializing each additional processor
After a reset, only one processor will be executing the reset code. This processor is called the boot processor (BP). For each additional processor found, the BP running the startup-x86 code will:
  • initialize the processor
  • switch it to 32-bit protected mode
  • allocate the processor its own page directory
  • set the processor spinning with interrupts disabled, waiting to be released by the kernel
Page updated: