summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/interp.lem1
-rw-r--r--src/lem_interp/run_with_elf_cheri.ml10
2 files changed, 5 insertions, 6 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index 9a081cf5..dccbe090 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -1452,7 +1452,6 @@ and interp_main mode t_level l_env l_mem (E_aux exp (l,annot)) =
let i = (List.length vs) - 1 in
if start = i then (Value v,lm,le) else (Value (update_vector_start dir i 1 v),lm,le)
| _ -> (Value v,lm,le) end
-
| _ -> (Value v,lm,le) end in
(match (tag,detaint v) with
(*Cast is telling us to read a register*)
diff --git a/src/lem_interp/run_with_elf_cheri.ml b/src/lem_interp/run_with_elf_cheri.ml
index 5aad62df..1d016453 100644
--- a/src/lem_interp/run_with_elf_cheri.ml
+++ b/src/lem_interp/run_with_elf_cheri.ml
@@ -1021,17 +1021,17 @@ let fetch_instruction_opcode_and_update_ia model addr_trans =
(match pc_addr with
| Some pc_addr ->
let pc_a = match addr_trans (get_addr_trans_regs ()) pc_addr with
- | Some a, Some events -> write_events events; integer_of_address a
+ | Some a, Some events -> write_events (List.rev events); integer_of_address a
| Some a, None -> integer_of_address a
| None, Some events ->
- write_events events;
+ write_events (List.rev events);
let nextPC = Reg.find "nextPC" !reg in
reg := Reg.add "PCC" (Reg.find "nextPCC" !reg) !reg;
let pc_addr = address_of_register_value nextPC in
(match pc_addr with
| Some pc_addr ->
(match addr_trans (get_addr_trans_regs ()) pc_addr with
- | Some a, Some events -> write_events events; integer_of_address a
+ | Some a, Some events -> write_events (List.rev events); integer_of_address a
| Some a, None -> integer_of_address a
| None, _ -> failwith "Address translation failed twice")
| None -> failwith "no nextPc address")
@@ -1068,9 +1068,9 @@ let rec fde_loop count context model mode track_dependencies addr_trans =
| Some v -> v
| None -> failwith "pc contains undef or unknown" in
let m_paddr_int = match addr_trans (get_addr_trans_regs ()) pc_val with
- | Some a, Some events -> write_events events; Some (integer_of_address a)
+ | Some a, Some events -> write_events (List.rev events); Some (integer_of_address a)
| Some a, None -> Some (integer_of_address a)
- | None, Some events -> write_events events; None
+ | None, Some events -> write_events (List.rev events); None
| None, None -> failwith "address translation failed and no writes" in
match m_paddr_int with
| Some pc ->