def AcpiMadtEntry.encode
bend-osdev-acpi@0.1.1.0 · madt.bend:271
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/entries.bend as N
271def AcpiMadtEntry.encode(e: AcpiMadtEntry) -> B.Octets:
272 match e:
273 case AcpiMadtLapic{u, a, f}:
274 N.AcpiRawEntry.encode(0, B.Octets.concat([madt.u8(u), madt.u8(a), madt.u32(f)]))
275 case AcpiMadtIoApic{i, a, g}:
276 N.AcpiRawEntry.encode(1, B.Octets.concat([madt.u8(i), madt.z(1n), madt.u32(a), madt.u32(g)]))
277 case AcpiMadtIso{b, s, g, f}:
278 N.AcpiRawEntry.encode(2, B.Octets.concat([madt.u8(b), madt.u8(s), madt.u32(g), madt.u16(f)]))
279 case AcpiMadtNmiSource{f, g}:
280 N.AcpiRawEntry.encode(3, B.Octets.concat([madt.u16(f), madt.u32(g)]))
281 case AcpiMadtLapicNmi{u, f, l}:
282 N.AcpiRawEntry.encode(4, B.Octets.concat([madt.u8(u), madt.u16(f), madt.u8(l)]))
283 case AcpiMadtLapicOverride{a}:
284 N.AcpiRawEntry.encode(5, B.Octets.concat([madt.z(2n), madt.u64(a)]))
285 case AcpiMadtX2apic{x, f, u}:
286 N.AcpiRawEntry.encode(9, B.Octets.concat([madt.z(2n), madt.u32(x), madt.u32(f), madt.u32(u)]))
287 case AcpiMadtX2apicNmi{f, u, l}:
288 N.AcpiRawEntry.encode(10, B.Octets.concat([madt.u16(f), madt.u32(u), madt.u8(l), madt.z(3n)]))
289 case AcpiMadtGicc{ci, u, f, pv, pg, vg, AcpiGiccAddrs{pk, b, gv, gh, gr}, mp, ec, sp, tr}:
290 N.AcpiRawEntry.encode(11, B.Octets.concat([madt.z(2n), madt.u32(ci), madt.u32(u), madt.u32(f), madt.u32(pv), madt.u32(pg), madt.u64(pk), madt.u64(b), madt.u64(gv), madt.u64(gh), madt.u32(vg), madt.u64(gr), madt.u64(mp), madt.u8(ec), madt.z(1n), madt.u16(sp), madt.u16(tr)]))
291 case AcpiMadtGicd{i, b, v}:
292 N.AcpiRawEntry.encode(12, B.Octets.concat([madt.z(2n), madt.u32(i), madt.u64(b), madt.z(4n), madt.u8(v), madt.z(3n)]))
293 case AcpiMadtGicMsi{i, b, f, c, s}:
294 N.AcpiRawEntry.encode(13, B.Octets.concat([madt.z(2n), madt.u32(i), madt.u64(b), madt.u32(f), madt.u16(c), madt.u16(s)]))
295 case AcpiMadtGicr{b, l}:
296 N.AcpiRawEntry.encode(14, B.Octets.concat([madt.z(2n), madt.u64(b), madt.u32(l)]))
297 case AcpiMadtGicIts{i, b}:
298 N.AcpiRawEntry.encode(15, B.Octets.concat([madt.z(2n), madt.u32(i), madt.u64(b), madt.z(4n)]))
299 case AcpiMadtWakeup{v, m}:
300 N.AcpiRawEntry.encode(16, B.Octets.concat([madt.u16(v), madt.z(4n), madt.u64(m)]))
301 case AcpiMadtOther{k, d}:
302 N.AcpiRawEntry.encode(k, d)