def in.base.pick
bend-osdev-acpi@0.1.1.0 · aml_interp.bend:416
import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
import bend-osdev-acpi@0.1.1.0/aml_ns.bend as S
import bend-osdev-acpi@0.1.1.0/aml_host.bend as Hs
416def in.base.pick(pci: Bool, +ns: S.AmlNs, +parent: String, +off: W.W64) -> W.W64:
417 match pci:
418 case False{}:
419 off
420 case True{}:
421 +adr = W.W64.lo(in.name_int(ns, S.AmlPath.child(parent, "_ADR")))
422 +bus = W.W64.lo(in.up_int(ns, parent, "_BBN"))
423 +seg = W.W64.lo(in.up_int(ns, parent, "_SEG"))
424 W.W64.add(Hs.AmlPci.address(seg, bus, U32.shrn(adr, 16n), U32.and(adr, 65535), 0), off)