diff --git a/dispatch.h b/dispatch.h index 0e18ae4..82782d1 100644 --- a/dispatch.h +++ b/dispatch.h @@ -347,7 +347,7 @@ DIGEN(000003, "SYNC", d_sync); DIGEN(000503, "EMCM", d_emcm); DIGEN(000501, "LMCM", d_lmcm); DIGEN(000021, "RMC", d_rmc); -DIGEN(000311, "VIFY", d_viry); +DIGEN(000311, "VIRY", d_viry); DIGEN(001113, "XVFY", d_xvfy); DIGEN(001304, "MDEI", d_mdxx); DIGEN(001305, "MDII", d_mdxx); @@ -365,6 +365,8 @@ DIGEN(000723, "EVMX", d_uii); DIGEN(000721, "ERMX", d_uii); DIGEN(000515, "OSI", d_uii); +DIGEN(000617, "LPID", d_lpid); + /* initialize entire class 1 generics (shift group) to "badshift", then initialize each individual shift instruction */ diff --git a/em.c b/em.c index 6ff8413..5f084bc 100644 --- a/em.c +++ b/em.c @@ -7162,18 +7162,22 @@ d_tstq: /* 0141757 */ d_emcm: /* 000503 - enter machine check mode */ TRACE(T_FLOW, " EMCM\n"); + RESTRICT(); goto fetch; d_lmcm: /* 000501 - leave machine check mode */ TRACE(T_FLOW, " LMCM\n"); + RESTRICT(); goto fetch; d_rmc: /* 000021 - reset machine check FF */ TRACE(T_FLOW, " RMC\n"); + RESTRICT(); goto fetch; d_viry: /* 000311 - ucode verify */ TRACE(T_FLOW, " VIRY\n"); + RESTRICT(); goto fetch; d_xvfy: /* 001113 - extended ucode verify */ @@ -7190,6 +7194,7 @@ d_xvfy: /* 001113 - extended ucode verify */ d_mdxx: /* 01304-01307, 01324 */ TRACE(T_FLOW, " MDxx\n"); + RESTRICT(); goto fetch; @@ -10036,6 +10041,11 @@ d_entr: /* 00103 */ put16t(utempa,crs[S]); goto fetch; +d_lpid: /* LPID 00617 */ + TRACE(T_FLOW, " LPID\n"); + RESTRICT(); + goto d_uii; + d_badmr: printf("em: unknown memory reference, inst='%06o, opcode '%o, op index=%d\n", inst, opcode, opix); fault(UIIFAULT, RPL, RP);