From f0baef16897be3d07e6d91e46ebdc8b28494dfb0 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 9 Oct 2018 16:39:10 -0700 Subject: Clarify interrupt delegation semantics (#158) * Clarify interrupt delegation semantics * Update contributors --- src/machine.tex | 11 +++++++++-- src/riscv-privileged.tex | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/machine.tex b/src/machine.tex index 8d717af..297c8bf 100644 --- a/src/machine.tex +++ b/src/machine.tex @@ -1109,13 +1109,20 @@ then reading back the value in {\tt medeleg} or {\tt mideleg} to see which bit positions hold a one. Traps never transition from a more-privileged mode to a less-privileged mode. -For example, if M-mode has delegated illegal instruction traps to S-mode, and +For example, if M-mode has delegated illegal instruction exceptions to S-mode, and M-mode software later executes an illegal instruction, the trap is taken in M-mode, rather than being delegated to S-mode. By contrast, traps may be taken horizontally. Using the same example, if M-mode has delegated illegal -instruction traps to S-mode, and S-mode software later executes an illegal +instruction exceptions to S-mode, and S-mode software later executes an illegal instruction, the trap is taken in S-mode. +Delegated interrupts result in the interrupt being masked at the delegator +privilege level. For example, if the supervisor timer interrupt (STI) is +delegated to S-mode by setting {\tt mideleg}[5], STIs will not be taken when +executing in M-mode. By contrast, if {\tt mideleg}[5] is clear, STIs can +be taken in any mode and regardless of current mode will transfer control to +M-mode. + \begin{figure}[h!] {\footnotesize \begin{center} diff --git a/src/riscv-privileged.tex b/src/riscv-privileged.tex index 85c5af0..20bf4d5 100644 --- a/src/riscv-privileged.tex +++ b/src/riscv-privileged.tex @@ -37,7 +37,8 @@ editors to suggest corrections): Krste Asanovi\'{c}, Peter Ashenden, Rimas Avi\v{z}ienis, Jacob Bachmeyer, Allen J. Baum, Paolo Bonzini, Ruslan Bukin, Christopher Celio, Chuanhua Chang, David Chisnall, Anthony Coulter, Palmer Dabbelt, Monte Dalrymple, Dennis Ferguson, Mike Frysinger, John Hauser, David Horner, Olof -Johansson, Yunsup Lee, Andrew Lutomirski, Jonathan Neusch{\"a}fer, Rishiyur +Johansson, Yunsup Lee, Andrew Lutomirski, Prashanth Mundkur, +Jonathan Neusch{\"a}fer, Rishiyur Nikhil, Stefan O'Rear, Albert Ou, John Ousterhout, David Patterson, Dmitri Pavlov, Kade Phillips, Colin Schmidt, Wesley Terpstra, Matt Thomas, Tommy Thorn, Ray VanDeWalker, Megan Wachs, Steve Wallach, Andrew Waterman, Clifford Wolf, -- cgit v1.1