@@ -1012,21 +1012,20 @@ Module TLB.
10121012 let index := level_index va lvl in
10131013 sregs ← othrow "TTBR should exist in initial state"
10141014 $ TState.read_sreg_at ts ttbr time;
1015- fold_left (λ prev sreg,
1015+ foldlM (λ prev sreg,
10161016 val_ttbr ← othrow "TTBR should be a 64 bit value"
10171017 $ regval_to_val ttbr sreg.1;
10181018 let asid := bv_extract 48 16 val_ttbr in
10191019 let ndctxt := NDCtxt.make pva (Some asid) in
10201020 let ctxt := existT plvl ndctxt in
10211021 (* parent entries should be from the original TLB (in the parent level) *)
10221022 let tes := elements (VATLB.get ctxt tlb.(vatlb)) in
1023- fold_left (λ prev te,
1024- '(vatlb_prev, is_changed_prev) ← prev;
1023+ foldlM (λ '(vatlb_prev, is_changed_prev) te,
10251024 '(vatlb_lvl, is_changed_lvl) ←
10261025 va_fill_lvl vatlb_prev ts init mem time ctxt te index ttbr;
10271026 mret (vatlb_lvl, is_changed_lvl || is_changed_prev)
1028- ) tes prev
1029- ) sregs (mret ( tlb.(vatlb), false))
1027+ ) prev tes
1028+ ) ( tlb.(vatlb), false) sregs
10301029 end ;
10311030 mret $ (TLB.make vatlb_new, is_changed).
10321031
@@ -1040,11 +1039,10 @@ Module TLB.
10401039 (time : nat)
10411040 (va : bv 64)
10421041 (ttbr : reg) : result string (t * bool) :=
1043- fold_left (λ prev lvl,
1044- '(tlb_prev, is_changed_prev) ← prev;
1042+ foldlM (λ '(tlb_prev, is_changed_prev) lvl,
10451043 '(tlb_new, is_changed) ← va_fill tlb_prev ts init mem time lvl va ttbr;
10461044 mret (tlb_new, is_changed || is_changed_prev)
1047- ) (enum Level) (mret ( tlb, false)).
1045+ ) (tlb, false) (enum Level ).
10481046
10491047 (** ** TLB invalidation *)
10501048
0 commit comments