From 9e012462f53113dc9ed00d7fbb89aeafeb9b89e9 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 2 Feb 2017 19:25:49 -0800 Subject: Fix interrupt delegation for coprocessors --- riscv/extension.cc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'riscv/extension.cc') diff --git a/riscv/extension.cc b/riscv/extension.cc index 5321c42..a34dd80 100644 --- a/riscv/extension.cc +++ b/riscv/extension.cc @@ -14,12 +14,7 @@ void extension_t::illegal_instruction() void extension_t::raise_interrupt() { - reg_t prv = p->get_state()->prv; - reg_t mie = get_field(p->get_state()->mstatus, MSTATUS_MIE); - - if (prv < PRV_M || (prv == PRV_M && mie)) - p->raise_interrupt(IRQ_COP); - + p->take_interrupt((reg_t)1 << IRQ_COP); // must not return throw std::logic_error("a COP exception was posted, but interrupts are disabled!"); } -- cgit v1.1