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)

Uses (11)

Used by (1)