def in.read_loc

bend-osdev-acpi@0.1.1.0 · aml_interp.bend:614

import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_value.bend as V
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

614# the value at a location
615def in.read_loc(~H: Data, ~io: H -> Hs.AmlHostOp -> Result<&2, &2, E.AcpiError, Hs.AmlHostAns<H>>, l: V.AmlLoc, +w: AmlWorld<H>) -> Result<&2, &2, E.AcpiError, AmlRead<H>>:
616  match l:
617    case V.AmlLName{+p}:
618      +q = in.unalias(AmlWorld.ns(H, w), p)
619      in.read_obj(~H, ~io, w, q, S.AmlNs.get(AmlWorld.ns(H, w), q))
620    case V.AmlLLocal{i}:
621      Done{AmlRead{w, in.ctx.local(H, w, i)}}
622    case V.AmlLArg{i}:
623      Done{AmlRead{w, in.ctx.arg(H, w, i)}}
624    case V.AmlLIndex{base, +i}:
625      in.elem.rd(H, in.read_loc(~H, ~io, base, w), i)
626    case V.AmlLElem{v, +i}:
627      in.wrap(H, w, AmlValue.element(v, i))
628    case V.AmlLDebug{}:
629      Done{AmlRead{w, V.AmlUninit{}}}
630    case V.AmlLNone{}:
631      Done{AmlRead{w, V.AmlUninit{}}}

Uses (17)

Used by (5)