diff options
Diffstat (limited to 'mips')
| -rw-r--r-- | mips/mips_extras.lem | 15 | ||||
| -rw-r--r-- | mips/mips_extras_embed.lem | 18 | ||||
| -rw-r--r-- | mips/mips_extras_embed_sequential.lem | 18 |
3 files changed, 22 insertions, 29 deletions
diff --git a/mips/mips_extras.lem b/mips/mips_extras.lem index 4bbf368b..bdaa08e6 100644 --- a/mips/mips_extras.lem +++ b/mips/mips_extras.lem @@ -6,15 +6,14 @@ open import Interp_inter_imp import Set_extra let memory_parameter_transformer mode v = - let mode = <|mode with endian = E_big_endian|> in match v with | Interp.V_tuple [location;length] -> + let (v,loc_regs) = extern_with_track mode extern_vector_value location in + match length with | Interp.V_lit (L_aux (L_num len) _) -> - let (v,regs) = extern_mem_value mode location in - (v,(natFromInteger len),regs) + (v,(natFromInteger len),loc_regs) | Interp.V_track (Interp.V_lit (L_aux (L_num len) _)) size_regs -> - let (v,loc_regs) = extern_mem_value mode location in match loc_regs with | Nothing -> (v,(natFromInteger len),Just (List.map (fun r -> extern_reg r Nothing) (Set_extra.toList size_regs))) | Just loc_regs -> (v,(natFromInteger len),Just (loc_regs++(List.map (fun r -> extern_reg r Nothing) (Set_extra.toList size_regs)))) @@ -24,12 +23,10 @@ let memory_parameter_transformer mode v = | _ -> Assert_extra.failwith ("memory_parameter_transformer: expected 'V_tuple [_;_]' given " ^ (Interp.string_of_value v)) end -let memory_parameter_transformer_option_address mode v = - let mode = <|mode with endian = E_big_endian|> in +let memory_parameter_transformer_option_address _mode v = match v with | Interp.V_tuple [location;_] -> - let (v,_) = extern_mem_value mode location in - Just v + Just (extern_vector_value location) | _ -> Assert_extra.failwith ("memory_parameter_transformer_option_address: expected 'V_tuple [_;_]' given " ^ (Interp.string_of_value v)) end @@ -42,7 +39,7 @@ let read_memory_functions : memory_reads = ] let memory_writes : memory_writes = - [ ("TAGw", (MW Write_tag (fun mode v -> let (v, regs) = extern_mem_value mode v in + [ ("TAGw", (MW Write_tag (fun mode v -> let (v, regs) = extern_with_track mode extern_vector_value v in (v, 1, regs)) (Just (fun (IState interp_state c) success -> let v = Interp.V_lit (L_aux (if success then L_one else L_zero) Unknown) in diff --git a/mips/mips_extras_embed.lem b/mips/mips_extras_embed.lem index 41a6726f..12f2ca5a 100644 --- a/mips/mips_extras_embed.lem +++ b/mips/mips_extras_embed.lem @@ -3,17 +3,15 @@ open import Sail_impl_base open import Sail_values open import Prompt -let endian = E_big_endian - val MEMr : (vector bitU * integer) -> M (vector bitU) val MEMr_reserve : (vector bitU * integer) -> M (vector bitU) val MEMr_tag : (vector bitU * integer) -> M (vector bitU) val MEMr_tag_reserve : (vector bitU * integer) -> M (vector bitU) -let MEMr (addr,size) = read_mem endian false Read_plain addr size -let MEMr_reserve (addr,size) = read_mem endian false Read_reserve addr size -let MEMr_tag (addr,size) = read_mem endian false Read_tag addr size -let MEMr_tag_reserve (addr,size) = read_mem endian false Read_tag_reserve addr size +let MEMr (addr,size) = read_mem false Read_plain addr size +let MEMr_reserve (addr,size) = read_mem false Read_reserve addr size +let MEMr_tag (addr,size) = read_mem false Read_tag addr size +let MEMr_tag_reserve (addr,size) = read_mem false Read_tag_reserve addr size val MEMea : (vector bitU * integer) -> M unit @@ -32,10 +30,10 @@ val MEMval_conditional : (vector bitU * integer * vector bitU) -> M bitU val MEMval_tag : (vector bitU * integer * vector bitU) -> M unit val MEMval_tag_conditional : (vector bitU * integer * vector bitU) -> M bitU -let MEMval (_,_,v) = write_mem_val endian v >>= fun _ -> return () -let MEMval_conditional (_,_,v) = write_mem_val endian v >>= fun b -> return (if b then B1 else B0) -let MEMval_tag (_,_,v) = write_mem_val endian v >>= fun _ -> return () -let MEMval_tag_conditional (_,_,v) = write_mem_val endian v >>= fun b -> return (if b then B1 else B0) +let MEMval (_,_,v) = write_mem_val v >>= fun _ -> return () +let MEMval_conditional (_,_,v) = write_mem_val v >>= fun b -> return (if b then B1 else B0) +let MEMval_tag (_,_,v) = write_mem_val v >>= fun _ -> return () +let MEMval_tag_conditional (_,_,v) = write_mem_val v >>= fun b -> return (if b then B1 else B0) val MEM_sync : unit -> M unit diff --git a/mips/mips_extras_embed_sequential.lem b/mips/mips_extras_embed_sequential.lem index 502fe102..9aeb9487 100644 --- a/mips/mips_extras_embed_sequential.lem +++ b/mips/mips_extras_embed_sequential.lem @@ -3,17 +3,15 @@ open import Sail_impl_base open import Sail_values open import State -let endian = E_big_endian - val MEMr : (vector bitU * integer) -> M (vector bitU) val MEMr_reserve : (vector bitU * integer) -> M (vector bitU) val MEMr_tag : (vector bitU * integer) -> M (vector bitU) val MEMr_tag_reserve : (vector bitU * integer) -> M (vector bitU) -let MEMr (addr,size) = read_mem endian false Read_plain addr size -let MEMr_reserve (addr,size) = read_mem endian false Read_reserve addr size -let MEMr_tag (addr,size) = read_mem endian false Read_tag addr size -let MEMr_tag_reserve (addr,size) = read_mem endian false Read_tag_reserve addr size +let MEMr (addr,size) = read_mem false Read_plain addr size +let MEMr_reserve (addr,size) = read_mem false Read_reserve addr size +let MEMr_tag (addr,size) = read_mem false Read_tag addr size +let MEMr_tag_reserve (addr,size) = read_mem false Read_tag_reserve addr size val MEMea : (vector bitU * integer) -> M unit @@ -32,10 +30,10 @@ val MEMval_conditional : (vector bitU * integer * vector bitU) -> M bitU val MEMval_tag : (vector bitU * integer * vector bitU) -> M unit val MEMval_tag_conditional : (vector bitU * integer * vector bitU) -> M bitU -let MEMval (_,_,v) = write_mem_val endian v >>= fun _ -> return () -let MEMval_conditional (_,_,v) = write_mem_val endian v >>= fun b -> return (if b then B1 else B0) -let MEMval_tag (_,_,v) = write_mem_val endian v >>= fun _ -> return () -let MEMval_tag_conditional (_,_,v) = write_mem_val endian v >>= fun b -> return (if b then B1 else B0) +let MEMval (_,_,v) = write_mem_val v >>= fun _ -> return () +let MEMval_conditional (_,_,v) = write_mem_val v >>= fun b -> return (if b then B1 else B0) +let MEMval_tag (_,_,v) = write_mem_val v >>= fun _ -> return () +let MEMval_tag_conditional (_,_,v) = write_mem_val v >>= fun b -> return (if b then B1 else B0) val MEM_sync : unit -> M unit |
