summaryrefslogtreecommitdiff
path: root/mips/run_embed.ml
diff options
context:
space:
mode:
authorRobert Norton2017-10-24 15:44:10 +0100
committerRobert Norton2017-10-24 15:44:10 +0100
commit29182cd14e228529b3e26ef901e927bde8d27345 (patch)
tree6b1e9b83458cbf7f9a6fcc22a4f1bec0f39e04e1 /mips/run_embed.ml
parent99a7462a88a186faf817e21c065e25f04d30aea7 (diff)
fix default cap value on cheri128 following previous changes -- E stored in registers is no longer xored with 48 so need to initialise it. Also use E and T values used by CHERI hw and adjust decoding functions appropriately. Fix shift functions for ocaml shallow embedding which failed to handle shifts greater than vector length.
Diffstat (limited to 'mips/run_embed.ml')
-rw-r--r--mips/run_embed.ml2
1 files changed, 1 insertions, 1 deletions
diff --git a/mips/run_embed.ml b/mips/run_embed.ml
index 463caffd..9dd063b1 100644
--- a/mips/run_embed.ml
+++ b/mips/run_embed.ml
@@ -250,7 +250,7 @@ module CHERI128_model : ISA_model = struct
let start_addr = (to_vec_dec_big (bi64, big_int_of_string "0x9000000040000000")) in
set_register Cheri128_embed._nextPC start_addr;
set_register_field_bit Cheri128_embed._CP0Status "BEV" Vone;
- let initial_cap_val_int = big_int_of_string "0x1fffe0000000800000000000000000000" in (* hex((0x80000 << 64) + (0x7fff << 113) + (1 << 128)) *)
+ let initial_cap_val_int = big_int_of_string "0x1fffe6000000100000000000000000000" in (* hex((0x10000 << 64) + (48 << 105) + (0x7fff << 113) + (1 << 128)) T=0x10000 E=48 perms=0x7fff tag=1 *)
let initial_cap_vec = to_vec_dec ((bi129), initial_cap_val_int) in
set_register Cheri128_embed._PCC initial_cap_vec;
set_register Cheri128_embed._nextPCC initial_cap_vec;