From 2943b41e0cbd7d38c63daa83aa29f9b36d22abed Mon Sep 17 00:00:00 2001 From: Jim Date: Tue, 2 Aug 2011 14:41:16 -0400 Subject: [PATCH] Cause UII for P300 paging instructions for CPUT4 T&M --- dispatch.h | 10 ++++++++++ em.c | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dispatch.h b/dispatch.h index c3d1916..0e18ae4 100644 --- a/dispatch.h +++ b/dispatch.h @@ -355,6 +355,16 @@ DIGEN(001306, "MDRS", d_mdxx); DIGEN(001307, "MDWC", d_mdxx); DIGEN(001324, "MDIW", d_mdxx); +DIGEN(000217, "EPMJ", d_uii); +DIGEN(000215, "LPMJ", d_uii); +DIGEN(000237, "EPMX", d_uii); +DIGEN(000235, "LPMX", d_uii); +DIGEN(000703, "EVMJ", d_uii); +DIGEN(000701, "ERMJ", d_uii); +DIGEN(000723, "EVMX", d_uii); +DIGEN(000721, "ERMX", d_uii); +DIGEN(000515, "OSI", d_uii); + /* initialize entire class 1 generics (shift group) to "badshift", then initialize each individual shift instruction */ diff --git a/em.c b/em.c index 7dc2728..d3efbea 100755 --- a/em.c +++ b/em.c @@ -5954,8 +5954,10 @@ d_sttm: /* 000510 */ /* OS/restricted instructions */ d_rts: /* 000511 */ - TRACE(T_FLOW, " RTS\n", inst); + TRACE(T_FLOW, " RTS / P300ISI\n", inst); RESTRICT(); + if (((crs[KEYS] & 016000) >> 10) <= 3) + goto d_uii; tempa = crs[TIMERH]; templ = tempa - *(short *)(crs+A); ea = *(ea_t *)(crs+OWNER);