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)

Uses (12)

Used by (1)