aboutsummaryrefslogtreecommitdiff
path: root/model/riscv_insts_aext.sail
diff options
context:
space:
mode:
authorTim Hutt <timothy.hutt@codasip.com>2024-05-21 14:48:25 +0100
committerTim Hutt <timothy.hutt@codasip.com>2024-06-03 16:01:37 +0100
commit9194dd51e58ee6767d4494a04fdddb4635c6bfdc (patch)
tree30a982ce043ee8a6dec3d4ffcf8e295c56a44cdb /model/riscv_insts_aext.sail
parente1663e985e2bc6c6311b6e81c296f6c4fd794e2d (diff)
downloadsail-riscv-9194dd51e58ee6767d4494a04fdddb4635c6bfdc.zip
sail-riscv-9194dd51e58ee6767d4494a04fdddb4635c6bfdc.tar.gz
sail-riscv-9194dd51e58ee6767d4494a04fdddb4635c6bfdc.tar.bz2
Change ext_data_get_addr to use bytes for width
Instead of `word_width` which can only be up to 8 bytes, just use bytes. This allows larger accesses (the limit is increased to 4096), e.g. for `cbo.zero`.
Diffstat (limited to 'model/riscv_insts_aext.sail')
-rw-r--r--model/riscv_insts_aext.sail6
1 files changed, 3 insertions, 3 deletions
diff --git a/model/riscv_insts_aext.sail b/model/riscv_insts_aext.sail
index 2e0eb9c..4264997 100644
--- a/model/riscv_insts_aext.sail
+++ b/model/riscv_insts_aext.sail
@@ -64,7 +64,7 @@ function clause execute(LOADRES(aq, rl, rs1, width, rd)) = {
/* Get the address, X(rs1) (no offset).
* Extensions might perform additional checks on address validity.
*/
- match ext_data_get_addr(rs1, zeros(), Read(Data), width) {
+ match ext_data_get_addr(rs1, zeros(), Read(Data), size_bytes(width)) {
Ext_DataAddr_Error(e) => { ext_handle_data_check_error(e); RETIRE_FAIL },
Ext_DataAddr_OK(vaddr) => {
let aligned : bool =
@@ -120,7 +120,7 @@ function clause execute (STORECON(aq, rl, rs2, rs1, width, rd)) = {
/* Get the address, X(rs1) (no offset).
* Extensions might perform additional checks on address validity.
*/
- match ext_data_get_addr(rs1, zeros(), Write(Data), width) {
+ match ext_data_get_addr(rs1, zeros(), Write(Data), size_bytes(width)) {
Ext_DataAddr_Error(e) => { ext_handle_data_check_error(e); RETIRE_FAIL },
Ext_DataAddr_OK(vaddr) => {
let aligned : bool =
@@ -205,7 +205,7 @@ function clause execute (AMO(op, aq, rl, rs2, rs1, width, rd)) = {
/* Get the address, X(rs1) (no offset).
* Some extensions perform additional checks on address validity.
*/
- match ext_data_get_addr(rs1, zeros(), ReadWrite(Data, Data), width) {
+ match ext_data_get_addr(rs1, zeros(), ReadWrite(Data, Data), size_bytes(width)) {
Ext_DataAddr_Error(e) => { ext_handle_data_check_error(e); RETIRE_FAIL },
Ext_DataAddr_OK(vaddr) => {
match translateAddr(vaddr, ReadWrite(Data, Data)) {