def in.store.base

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

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

853# Store (chapter 19) to a location, an Arg holding a reference excepted
854def in.store.base(~H: Data, ~io: H -> Hs.AmlHostOp -> Result<&2, &2, E.AcpiError, Hs.AmlHostAns<H>>, l: V.AmlLoc, +w: AmlWorld<H>, +v: V.AmlValue) -> Result<&2, &2, E.AcpiError, AmlWorld<H>>:
855  match l:
856    case V.AmlLName{+p}:
857      +q = in.unalias(AmlWorld.ns(H, w), p)
858      in.store.obj(~H, ~io, w, q, S.AmlNs.get(AmlWorld.ns(H, w), q), v)
859    case V.AmlLLocal{i}:
860      Done{in.set.local(H, w, i, v)}
861    case V.AmlLArg{i}:
862      Done{in.set.arg(H, w, i, v)}
863    case V.AmlLIndex{base, i}:
864      in.put.index(~H, ~io, base, i, w, v)
865    case V.AmlLElem{x, i}:
866      Done{w}
867    case V.AmlLDebug{}:
868      Done{in.debug(H, w, v)}
869    case V.AmlLNone{}:
870      Done{w}

Uses (15)

Used by (2)