API Reference

Core

The hypervisor entry point and boot-time initialization logic.

group Core

Hypervisor entry point and boot-time initialization.

Hypervisor core — entry point, scheduler, and exception handling.

Functions

void hmain()

Main hypervisor entry point (called from boot.S).

Uses C linkage so the assembly boot code can branch to it by name without C++ name mangling.

Note

Currently a Phase 0 boot stub. Future phases will replace the infinite loop with vCPU scheduling and Stage-2 MMU setup.

Warning

Must never return. The assembly boot stub has no return address — falling off the end of hmain() is undefined behaviour.

Drivers

UART Driver

PL011 UART driver for early debug output. Supports QEMU virt and physical Raspberry Pi 5 targets via a compile-time base address.

group UART Driver

PL011 UART driver for early serial I/O.

PL011 UART driver for early debug output.

Supports both the QEMU virt machine (base 0x09000000) and physical Raspberry Pi 5 hardware (base 0x7E201000), selected at compile time via the QEMU preprocessor define.

class Uart
#include <uart.h>

Static PL011 UART driver for early serial I/O.

Public Static Functions

static void init()

Initialize the PL011 UART.

Note

Must be called before print().

static void print(const char *str)

Transmit a null-terminated string.

Transmit a null-terminated string character by character.

Note

Each character is sent via putc(), which spins on the TX FIFO. For large strings this blocks proportionally.

Parameters:

str – Pointer to the null-terminated string to send.