1
0
mirror of https://github.com/prirun/p50em.git synced 2026-03-05 10:24:06 +00:00

For CPUT4, add LPID (only checks restricted) and mark some other

unimplemented instructions as restricted.
This commit is contained in:
Jim
2011-08-06 09:30:27 -04:00
parent 23b8cd9892
commit 6b080f7c5e
2 changed files with 13 additions and 1 deletions

View File

@@ -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 */

10
em.c
View File

@@ -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);