def sl.read
bend-osdev-acpi@0.1.1.0 · rsdt.bend:32
import bend-osdev-acpi@0.1.1.0/rsdt.bend as Rsdt
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-acpi@0.1.1.0/fields.bend as F
32
33def sl.read(n: Nat, wide: Bool, +o: B.Octets, acc: List<&2, W.W64>) -> List<&2, W.W64>:
34 match n:
35 case 0n:
36 sl.rev(acc, Nil{})
37 case 1n+p:
38 match wide:
39 case True{}:
40 sl.read(p, True{}, B.Octets.drop(8n, o), Con{F.AcpiF.u64(o, 0n), acc})
41 case False{}:
42 sl.read(p, False{}, B.Octets.drop(4n, o), Con{W.W64.from_u32(F.AcpiF.u32(o, 0n)), acc})