31 lines
1.5 KiB
Zig
31 lines
1.5 KiB
Zig
//! /system/services/acpi — the ACPI discovery service: the x86 firmware
|
|
//! interpreter, moved out of ring 0 (docs/m19-m20-plan.md, M20). **Placeholder:
|
|
//! not implemented until M20.1** — it exists so the build's `-Ddiscovery`
|
|
//! option has both of its values and the ramdisk's neutral `discovery` slot is
|
|
//! wired before the implementation lands.
|
|
//!
|
|
//! What it becomes (the plan's decisions 5 and 7): claim the `acpi-tables`
|
|
//! node the kernel publishes (table blobs + the broad io_port grant + the SCI),
|
|
//! map the tables, and run the **shared AML module** in ring 3 behind a `Hal`
|
|
//! backed by `mmio_map` and `io_read`/`io_write` — the interpreter cannot tell
|
|
//! it moved. Then the bus-driver shape: `device_register` the namespace
|
|
//! devices (`_HID`, `_CRS` resources, containment against the node's
|
|
//! apertures), report each to the device manager, stay resident under its
|
|
//! supervision. M21 grows the event side on the same claim: the SCI, PM1 fixed
|
|
//! events, GPEs, Notify — published through the domain-named power protocol,
|
|
//! never an "ACPI events" protocol.
|
|
|
|
const runtime = @import("runtime");
|
|
|
|
pub fn main() void {
|
|
// Not implemented: exit cleanly and silently (a bare spawn by the
|
|
// initial-ramdisk sweep must not derange other tests' markers). The
|
|
// supervisor reads a clean exit as "meant to stop" — correct for a
|
|
// placeholder.
|
|
}
|
|
|
|
pub const panic = runtime.panic;
|
|
comptime {
|
|
_ = &runtime.start._start; // pull the runtime entry shim into the image
|
|
}
|