From dc62ae8cf283cdf71c0cd2001d57abc77bc52673 Mon Sep 17 00:00:00 2001 From: Shaked Flur Date: Thu, 26 Oct 2017 11:40:35 +0100 Subject: fixed release acquire semantics of AMOs --- risc-v/riscv.sail | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/risc-v/riscv.sail b/risc-v/riscv.sail index f36dba57..4938aaca 100644 --- a/risc-v/riscv.sail +++ b/risc-v/riscv.sail @@ -365,14 +365,14 @@ function clause execute (AMO(op, aq, rl, rs2, rs1, width, rd)) = { (bit[64]) addr := rGPR(rs1); switch (width) { - case WORD -> mem_write_ea(addr, 4, aq, rl, true) - case DOUBLE -> mem_write_ea(addr, 8, aq, rl, true) + case WORD -> mem_write_ea(addr, 4, aq & rl, rl, true) + case DOUBLE -> mem_write_ea(addr, 8, aq & rl, rl, true) }; (bit[64]) loaded := switch (width) { - case WORD -> EXTS(mem_read(addr, 4, aq, rl, true)) - case DOUBLE -> mem_read(addr, 8, aq, rl, true) + case WORD -> EXTS(mem_read(addr, 4, aq, aq & rl, true)) + case DOUBLE -> mem_read(addr, 8, aq, aq & rl, true) }; wGPR(rd, loaded); @@ -392,8 +392,8 @@ function clause execute (AMO(op, aq, rl, rs2, rs1, width, rd)) = { }; switch (width) { - case WORD -> mem_write_value(addr, 4, result[31..0], aq, rl, true) - case DOUBLE -> mem_write_value(addr, 8, result, aq, rl, true) + case WORD -> mem_write_value(addr, 4, result[31..0], aq & rl, rl, true) + case DOUBLE -> mem_write_value(addr, 8, result, aq & rl, rl, true) }; } -- cgit v1.2.3