From fbfb1efdeb362aff97055b7e20c33db935e43038 Mon Sep 17 00:00:00 2001 From: Dan Smathers Date: Tue, 9 Apr 2024 11:14:31 -0600 Subject: [PATCH 1/2] Fix general interrupt overview table ie description ie represents the new global interrupt enable mstatus.xie. Clarify that the highest ranked interrupt must have clicintip[i] and clicintie[i] == 1. Signed-off-by: Dan Smathers --- clic.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clic.adoc b/clic.adoc index 8f331ad..a730f68 100644 --- a/clic.adoc +++ b/clic.adoc @@ -1258,11 +1258,11 @@ privilege mode. The overall behavior is summarized in the following table: the Current `p/ie/il` fields represent the current privilege mode `P` (not -software visible), interrupt enable `ie` = -({status}.{ie} & `clicintie[__i__]`) and interrupt +software visible), new privilege mode global interrupt enable `ie` and interrupt level `L` = max({intstatus}.{il}, {intthresh}.`th`); the CLIC `priv`,`level`, and `id` fields -represent the highest-ranked interrupt currently present in the CLIC +represent the highest-ranked pending and enabled interrupt +(`clicintip[__i__]` & `clicintie[__i__]` == 1) currently present in the CLIC with `nP` representing the new privilege mode, `nL` representing the new interrupt level, and `id` representing the interrupt's id; Current' shows the `p/ie/il` context in the handler's privilege mode; From 878398bcb500de0dda089e0bd4df7f8e5d30dd9d Mon Sep 17 00:00:00 2001 From: Dan Smathers Date: Wed, 10 Apr 2024 14:50:48 -0600 Subject: [PATCH 2/2] add additional line to generic interrupt behavior table to remove undefined refence to e using 'e' value in the ie column in the last line of the generic interrupt behavior table only saved one line in the table. Just added the extra line to the table and removed the reference to e and replaced with 0 then 1. Signed-off-by: Dan Smathers --- clic.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clic.adoc b/clic.adoc index a730f68..e111fe0 100644 --- a/clic.adoc +++ b/clic.adoc @@ -1281,7 +1281,8 @@ context fields in {cause} and {epc}. P 1 L | nP=P 0 - - - - - - - - - # Interrupt ignored P 1 L | nP=P L P 0 nL V id P L 1 pc # Horizontal interrupt taken P ? ? | nP>P 0 ? |-> - - - - - - - - - # No interrupt - P e L | nP>P 0 nP 0 nL V id P L e pc # Vertical interrupt taken + P 0 L | nP>P 0 nP 0 nL V id P L 0 pc # Vertical interrupt taken + P 1 L | nP>P 0 nP 0 nL V id P L 1 pc # Vertical interrupt taken ---- ==== Critical Sections in Interrupt Handlers