File tree Expand file tree Collapse file tree 4 files changed +27
-2
lines changed Expand file tree Collapse file tree 4 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -289,6 +289,7 @@ versions:
289289 - Fix wrong mantissa bit selection in qc.norm, qc.normu and qc.normeu instructions
290290 - Fix wrong exponent calculation in qc.normeu instruction
291291 - Fix IDL code and description of qc.setwm instruction to state that number of words written 0..31.
292+ - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mret and qc.c.mnret instructions
292293 implies :
293294 - { name: Xqcia, version: "0.6.0" }
294295 - { name: Xqciac, version: "0.3.0" }
@@ -298,7 +299,7 @@ versions:
298299 - { name: Xqcicm, version: "0.2.0" }
299300 - { name: Xqcics, version: "0.2.0" }
300301 - { name: Xqcicsr, version: "0.3.0" }
301- - { name: Xqciint, version: "0.5 .0" }
302+ - { name: Xqciint, version: "0.6 .0" }
302303 - { name: Xqciio, version: "0.1.0" }
303304 - { name: Xqcilb, version: "0.2.0" }
304305 - { name: Xqcili, version: "0.2.0" }
Original file line number Diff line number Diff line change @@ -80,6 +80,19 @@ versions:
8080 changes :
8181 - Add stack checks to qc.c.mienter, qc.c.mienter.nest, qc.c.mileaveret
8282 requires : { name: Zca, version: ">= 1.0.0" }
83+ - version : " 0.6.0"
84+ state : frozen
85+ ratification_date : null
86+ contributors :
87+ - name : Albert Yosher
88+ company : Qualcomm Technologies, Inc.
89+ 90+ - name : Derek Hower
91+ company : Qualcomm Technologies, Inc.
92+ 93+ changes :
94+ - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mret and qc.c.mnret instructions
95+ requires : { name: Zca, version: ">= 1.0.0" }
8396description : |
8497 The Xqciint extension includes eleven instructions to accelerate interrupt
8598 servicing by performing common actions during ISR prologue/epilogue.
Original file line number Diff line number Diff line change @@ -30,6 +30,12 @@ operation(): |
3030 CSR[qc.mcause].sw_write(qc_mcause_val_masked |
3131 (1<<28) | (mnpie_val<<26) | (1<<30) |
3232 (mnpil_val << 12) | (0xF << 20));
33+ if (CSR[mnstatus].MNPP != 2'b11) {
34+ CSR[mstatus].MPRV = 0;
35+ if (implemented?(ExtensionName::Smdbltrp)) {
36+ CSR[mstatush].MDT = 1'b0;
37+ }
38+ }
3339 if (CSR[mnstatus].MNPP == 2'b00) {
3440 set_mode(PrivilegeMode::U);
3541 } else if (CSR[mnstatus].MNPP == 2'b01) {
Original file line number Diff line number Diff line change @@ -28,11 +28,16 @@ operation(): |
2828 Bits<4> mpil_val = (qc_mcause_val >> 16) & 0xF;
2929 CSR[mstatus].MIE = mpie_val;
3030 CSR[mstatus].MPIE = 1'b1;
31- CSR[mstatush].MDT = mpdt_val;
31+ if (implemented?(ExtensionName::Smdbltrp)) {
32+ CSR[mstatush].MDT = mpdt_val;
33+ }
3234 CSR[qc.mcause].sw_write(qc_mcause_val_masked |
3335 (1<<27) | (mpie_val<<26) | (0<<29) |
3436 (mpil_val << 12) | (0xF << 16));
3537 if (mpdt_val == 1'b0) {
38+ if (CSR[mstatus].MPP != 2'b11) {
39+ CSR[mstatus].MPRV = 0;
40+ }
3641 if (CSR[mstatus].MPP == 2'b00) {
3742 set_mode(PrivilegeMode::U);
3843 } else if (CSR[mstatus].MPP == 2'b01) {
You can’t perform that action at this time.
0 commit comments