//! /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 }