aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJessica Clarke <jrtc27@jrtc27.com>2021-03-14 23:51:13 +0000
committerGitHub <noreply@github.com>2021-03-14 16:51:13 -0700
commitde5d0a52fd49a0b3feee3b0ff70e55e3a9aa4350 (patch)
tree4f4f716bfe7e8755b838fef0bbd0a9f9ca5db4e3
parent0453d462a180927169656e6e3f7faf3042b23e5b (diff)
downloadriscv-isa-manual-de5d0a52fd49a0b3feee3b0ff70e55e3a9aa4350.zip
riscv-isa-manual-de5d0a52fd49a0b3feee3b0ff70e55e3a9aa4350.tar.gz
riscv-isa-manual-de5d0a52fd49a0b3feee3b0ff70e55e3a9aa4350.tar.bz2
Clarify that AMOs use the original address when rd == rs1 (#632)
Currently due to the sequential description in use it technically says that you should use the just-loaded value in that case, when that is of course not what's intended, nor what implementations do.
-rw-r--r--src/a.tex2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/a.tex b/src/a.tex
index 3ca0fac..5d64cbc 100644
--- a/src/a.tex
+++ b/src/a.tex
@@ -435,7 +435,7 @@ are encoded with an R-type instruction format. These AMO instructions
atomically load a data value from the address in {\em rs1}, place the
value into register {\em rd}, apply a binary operator to the loaded
value and the original value in {\em rs2}, then store the result back
-to the address in {\em rs1}. AMOs can either operate on 64-bit (RV64
+to the original address in {\em rs1}. AMOs can either operate on 64-bit (RV64
only) or 32-bit words in memory. For RV64, 32-bit AMOs always
sign-extend the value placed in {\em rd}, and ignore the upper 32 bits
of the original value of {\em rs2}.