def fld.keep

bend-osdev-acpi@0.1.1.0 · aml_field.bend:171

import bend-osdev-acpi@0.1.1.0/aml_field.bend as AmlField
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_host.bend as Hs

171# the unit's bits that are not the field's, by the update rule: read
172# (Preserve), all ones, all zeros
173def fld.keep(~H: Data, ~io: H -> Hs.AmlHostOp -> Result<&2, &2, E.AcpiError, Hs.AmlHostAns<H>>, whole: Bool, rule: Nat, h: H, +a: Hs.AmlAccess) -> Result<&2, &2, E.AcpiError, Hs.AmlHostAns<H>>:
174  match whole:
175    case True{}:
176      Done{Hs.AmlHostAns{h, W.W64.zero()}}
177    case False{}:
178      match rule:
179        case 1n:
180          Done{Hs.AmlHostAns{h, W.W64.max()}}
181        case 2n:
182          Done{Hs.AmlHostAns{h, W.W64.zero()}}
183        case _:
184          io(h, Hs.AmlHRead{a})

Uses (9)

Used by (1)