diff options
author | Prashanth Mundkur <prashanth.mundkur@gmail.com> | 2020-01-07 17:09:57 -0800 |
---|---|---|
committer | Prashanth Mundkur <prashanth.mundkur@gmail.com> | 2020-01-07 17:09:57 -0800 |
commit | 778301c9a2f483523e83581d7cffb93effb75134 (patch) | |
tree | 3691b22682552587b8c50b3b63a32a366d6b3274 /handwritten_support | |
parent | e15f302b12df29014c5dd6d19bbacf12be19ff4d (diff) | |
parent | dfebc748f8a762718cfda1f1a1201debe754a9c6 (diff) | |
download | sail-riscv-778301c9a2f483523e83581d7cffb93effb75134.zip sail-riscv-778301c9a2f483523e83581d7cffb93effb75134.tar.gz sail-riscv-778301c9a2f483523e83581d7cffb93effb75134.tar.bz2 |
Merge branch 'master' into rsnikhil.
Diffstat (limited to 'handwritten_support')
-rw-r--r-- | handwritten_support/0.11/mem_metadata.lem | 16 | ||||
-rw-r--r-- | handwritten_support/mem_metadata.lem | 16 | ||||
-rw-r--r-- | handwritten_support/mem_metadata.v | 11 |
3 files changed, 43 insertions, 0 deletions
diff --git a/handwritten_support/0.11/mem_metadata.lem b/handwritten_support/0.11/mem_metadata.lem new file mode 100644 index 0000000..8a8c070 --- /dev/null +++ b/handwritten_support/0.11/mem_metadata.lem @@ -0,0 +1,16 @@ +open import Pervasives +open import Pervasives_extra +open import Sail2_instr_kinds +open import Sail2_values +open import Sail2_operators_mwords +open import Sail2_prompt_monad +open import Sail2_prompt + +val write_ram : forall 'rv 'e 'a 'n. Size 'a, Size 'n => write_kind -> mword 'a -> integer -> mword 'n -> unit -> monad 'rv bool 'e +let write_ram wk addr width data meta = + write_mem wk () addr width data + +val read_ram : forall 'rv 'e 'a 'n. Size 'a, Size 'n => read_kind -> mword 'a -> integer -> bool -> monad 'rv (mword 'n * unit) 'e +let read_ram rk addr width read_tag = + read_mem rk () addr width >>= (fun (data : mword 'n) -> + return (data, ())) diff --git a/handwritten_support/mem_metadata.lem b/handwritten_support/mem_metadata.lem new file mode 100644 index 0000000..8a8c070 --- /dev/null +++ b/handwritten_support/mem_metadata.lem @@ -0,0 +1,16 @@ +open import Pervasives +open import Pervasives_extra +open import Sail2_instr_kinds +open import Sail2_values +open import Sail2_operators_mwords +open import Sail2_prompt_monad +open import Sail2_prompt + +val write_ram : forall 'rv 'e 'a 'n. Size 'a, Size 'n => write_kind -> mword 'a -> integer -> mword 'n -> unit -> monad 'rv bool 'e +let write_ram wk addr width data meta = + write_mem wk () addr width data + +val read_ram : forall 'rv 'e 'a 'n. Size 'a, Size 'n => read_kind -> mword 'a -> integer -> bool -> monad 'rv (mword 'n * unit) 'e +let read_ram rk addr width read_tag = + read_mem rk () addr width >>= (fun (data : mword 'n) -> + return (data, ())) diff --git a/handwritten_support/mem_metadata.v b/handwritten_support/mem_metadata.v new file mode 100644 index 0000000..0e53888 --- /dev/null +++ b/handwritten_support/mem_metadata.v @@ -0,0 +1,11 @@ +Require Import Sail2_instr_kinds. +Require Import Sail2_values. +Require Import Sail2_operators_mwords. +Require Import Sail2_prompt_monad. +Require Import Sail2_prompt. + +Definition write_ram {rv e a} wk (addr : mword a) size (v : mword (8 * size)) (meta : unit) : monad rv bool e := write_mem wk a addr size v. + +Definition read_ram {rv e a} rk (addr : mword a) size (read_tag : bool) `{ArithFact (size >= 0)} : monad rv (mword (8 * size) * unit) e := + read_mem rk a addr size >>= fun data => + returnm (data, tt). |