def madt.typed

bend-osdev-acpi@0.1.1.0 · madt.bend:122

import bend-osdev-acpi@0.1.1.0/madt.bend as Madt
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-acpi@0.1.1.0/fields.bend as F

122def madt.typed(k: Nat, +d: B.Octets) -> AcpiMadtEntry:
123  match k:
124    case 0n:
125      AcpiMadtLapic{F.AcpiF.u8(d, 2n), F.AcpiF.u8(d, 3n), F.AcpiF.u32(d, 4n)}
126    case 1n:
127      AcpiMadtIoApic{F.AcpiF.u8(d, 2n), F.AcpiF.u32(d, 4n), F.AcpiF.u32(d, 8n)}
128    case 2n:
129      AcpiMadtIso{F.AcpiF.u8(d, 2n), F.AcpiF.u8(d, 3n), F.AcpiF.u32(d, 4n), F.AcpiF.u16(d, 8n)}
130    case 3n:
131      AcpiMadtNmiSource{F.AcpiF.u16(d, 2n), F.AcpiF.u32(d, 4n)}
132    case 4n:
133      AcpiMadtLapicNmi{F.AcpiF.u8(d, 2n), F.AcpiF.u16(d, 3n), F.AcpiF.u8(d, 5n)}
134    case 5n:
135      AcpiMadtLapicOverride{F.AcpiF.u64(d, 4n)}
136    case 9n:
137      AcpiMadtX2apic{F.AcpiF.u32(d, 4n), F.AcpiF.u32(d, 8n), F.AcpiF.u32(d, 12n)}
138    case 10n:
139      AcpiMadtX2apicNmi{F.AcpiF.u16(d, 2n), F.AcpiF.u32(d, 4n), F.AcpiF.u8(d, 8n)}
140    case 11n:
141      madt.gicc(d)
142    case 12n:
143      AcpiMadtGicd{F.AcpiF.u32(d, 4n), F.AcpiF.u64(d, 8n), F.AcpiF.u8(d, 20n)}
144    case 13n:
145      AcpiMadtGicMsi{F.AcpiF.u32(d, 4n), F.AcpiF.u64(d, 8n), F.AcpiF.u32(d, 16n), F.AcpiF.u16(d, 20n), F.AcpiF.u16(d, 22n)}
146    case 14n:
147      AcpiMadtGicr{F.AcpiF.u64(d, 4n), F.AcpiF.u32(d, 12n)}
148    case 15n:
149      AcpiMadtGicIts{F.AcpiF.u32(d, 4n), F.AcpiF.u64(d, 8n)}
150    case 16n:
151      AcpiMadtWakeup{F.AcpiF.u16(d, 2n), F.AcpiF.u64(d, 8n)}
152    case _:
153      AcpiMadtOther{F.AcpiF.u8(d, 0n), B.Octets.drop(2n, d)}

Uses (9)

Used by (1)