aboutsummaryrefslogtreecommitdiff
path: root/src/machine.tex
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2021-09-21 19:21:49 -0700
committerAndrew Waterman <andrew@sifive.com>2021-09-21 19:22:58 -0700
commitd29cb13885d7dfaae9aaa27b45e44733254ead37 (patch)
tree2a1c2820edab2a7facfb8c5076e9b96b23ebdf15 /src/machine.tex
parent9b46f474bd8e02f60ecafc4c59a5e95aace9bf81 (diff)
downloadriscv-isa-manual-d29cb13885d7dfaae9aaa27b45e44733254ead37.zip
riscv-isa-manual-d29cb13885d7dfaae9aaa27b45e44733254ead37.tar.gz
riscv-isa-manual-d29cb13885d7dfaae9aaa27b45e44733254ead37.tar.bz2
Add example to clarify mip.SEIP behavior
Diffstat (limited to 'src/machine.tex')
-rw-r--r--src/machine.tex8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/machine.tex b/src/machine.tex
index 3472d44..043d584 100644
--- a/src/machine.tex
+++ b/src/machine.tex
@@ -1555,6 +1555,14 @@ Only the software-writable SEIP bit participates in the
read-modify-write sequence of a CSRRS or CSRRC instruction.
\begin{commentary}
+ For example, if we name the software-writable SEIP bit {\tt B} and the
+ signal from the external interrupt controller {\tt E}, then if \mbox{\tt csrrs
+ t0, mip, t1} is executed, {\tt t0[9]} is written with \mbox{\tt B || E}, then
+ {\tt B} is written with \mbox{\tt B || t1[9]}.
+ If \mbox{\tt csrrw t0, mip, t1} is executed, then {\tt t0[9]} is written with
+ \mbox{\tt B || E}, and {\tt B} is simply written with {\tt t1[9]}.
+ In neither case does {\tt B} depend upon {\tt E}.
+
The SEIP field behavior is designed to allow a higher privilege
layer to mimic external interrupts cleanly, without losing any real
external interrupts. The behavior of the CSR instructions is