From 1f7132e1e835e804861833f897c2c85f302f5ddf Mon Sep 17 00:00:00 2001 From: Hamid Rostami Date: Tue, 14 Apr 2026 22:09:12 +0100 Subject: [PATCH] Add new event type for ebreak, also report memory write error --- uvm32/uvm32.c | 8 ++++++++ uvm32/uvm32.h | 1 + 2 files changed, 9 insertions(+) diff --git a/uvm32/uvm32.c b/uvm32/uvm32.c index f62acbc..7fed1b3 100644 --- a/uvm32/uvm32.c +++ b/uvm32/uvm32.c @@ -309,6 +309,14 @@ uint32_t uvm32_run(uvm32_state_t *vmst, uvm32_evt_t *evt, uint32_t instr_meter) setStatusErr(vmst, UVM32_ERR_MEM_RD); setup_err_evt(vmst, evt); break; + case 8: + setStatusErr(vmst, UVM32_ERR_MEM_WR); + setup_err_evt(vmst, evt); + break; + case 3: // ebreak + vmst->_ioevt.typ = UVM32_EVT_BREAK; + setStatus(vmst, UVM32_STATUS_PAUSED); + break; default: // unhandled exception setStatusErr(vmst, UVM32_ERR_INTERNAL_CORE); diff --git a/uvm32/uvm32.h b/uvm32/uvm32.h index 25571b3..802746f 100644 --- a/uvm32/uvm32.h +++ b/uvm32/uvm32.h @@ -98,6 +98,7 @@ typedef enum { typedef enum { UVM32_EVT_ERR, /*! Error has occurred, details in uvm32_evt_t data.err field */ UVM32_EVT_SYSCALL, /*! A syscall has been requested, details in uvm32__evt_t data.syscall field */ + UVM32_EVT_BREAK, UVM32_EVT_END, /*! The program has ended by making a UVM32_SYSCALL_HALT */ } uvm32_evt_typ_t;