diff options
| author | Robert Norton | 2017-10-24 15:44:10 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-10-24 15:44:10 +0100 |
| commit | 29182cd14e228529b3e26ef901e927bde8d27345 (patch) | |
| tree | 6b1e9b83458cbf7f9a6fcc22a4f1bec0f39e04e1 /mips/run_embed.ml | |
| parent | 99a7462a88a186faf817e21c065e25f04d30aea7 (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.ml | 2 |
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; |
