diff options
Diffstat (limited to 'riscv/riscv_jalr_seq.sail')
| -rw-r--r-- | riscv/riscv_jalr_seq.sail | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/riscv/riscv_jalr_seq.sail b/riscv/riscv_jalr_seq.sail new file mode 100644 index 00000000..b38563ef --- /dev/null +++ b/riscv/riscv_jalr_seq.sail @@ -0,0 +1,14 @@ +/* The definition for the sequential model. */ + +function clause execute (RISCV_JALR(imm, rs1, rd)) = { +/* For the sequential model, the memory-model definition doesn't work directly + if rs1 = rd. We would effectively have to keep a regfile for reads and another for + writes, and swap on instruction completion. This could perhaps be optimized in + some manner, but for now, we just keep a reordered definition to improve simulator + performance. +*/ + let newPC : xlenbits = X(rs1) + EXTS(imm); + X(rd) = nextPC; + nextPC = newPC[63..1] @ 0b0; + true +} |
