def AcpiSratEntry.encode

bend-osdev-acpi@0.1.1.0 · srat.bend:161

import bend-osdev-acpi@0.1.1.0/srat.bend as Srat
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
import bend-osdev-acpi@0.1.1.0/entries.bend as N

161def AcpiSratEntry.encode(e: AcpiSratEntry) -> B.Octets:
162  match e:
163    case AcpiSratLapic{+dm, a, f, s, c}:
164      N.AcpiRawEntry.encode(0, B.Octets.concat([B.Octets.of_list([dm, a]), B.Octets.le32(f), B.Octets.of_list([s]), F.AcpiF.le24(U32.shrn(dm, 8n)), B.Octets.le32(c)]))
165    case AcpiSratMemory{dm, b, l, f}:
166      N.AcpiRawEntry.encode(1, B.Octets.concat([B.Octets.le32(dm), srat.z(2n), B.Octets.le64(b), B.Octets.le64(l), srat.z(4n), B.Octets.le32(f), srat.z(8n)]))
167    case AcpiSratX2apic{dm, x, f, c}:
168      N.AcpiRawEntry.encode(2, B.Octets.concat([srat.z(2n), B.Octets.le32(dm), B.Octets.le32(x), B.Octets.le32(f), B.Octets.le32(c), srat.z(4n)]))
169    case AcpiSratGicc{dm, u, f, c}:
170      N.AcpiRawEntry.encode(3, B.Octets.concat([B.Octets.le32(dm), B.Octets.le32(u), B.Octets.le32(f), B.Octets.le32(c)]))
171    case AcpiSratGicIts{dm, i}:
172      N.AcpiRawEntry.encode(4, B.Octets.concat([B.Octets.le32(dm), srat.z(2n), B.Octets.le32(i)]))
173    case AcpiSratGeneric{k, ht, dm, hd, f}:
174      N.AcpiRawEntry.encode(k, B.Octets.concat([srat.z(1n), B.Octets.of_list([ht]), B.Octets.le32(dm), F.AcpiF.fit(16n, hd), B.Octets.le32(f), srat.z(4n)]))
175    case AcpiSratOther{k, d}:
176      N.AcpiRawEntry.encode(k, d)

Uses (12)

Used by (1)