mirror of
https://github.com/prirun/p50em.git
synced 2026-05-05 07:43:44 +00:00
For CPUT4, add LPID (only checks restricted) and mark some other
unimplemented instructions as restricted.
This commit is contained in:
@@ -347,7 +347,7 @@ DIGEN(000003, "SYNC", d_sync);
|
|||||||
DIGEN(000503, "EMCM", d_emcm);
|
DIGEN(000503, "EMCM", d_emcm);
|
||||||
DIGEN(000501, "LMCM", d_lmcm);
|
DIGEN(000501, "LMCM", d_lmcm);
|
||||||
DIGEN(000021, "RMC", d_rmc);
|
DIGEN(000021, "RMC", d_rmc);
|
||||||
DIGEN(000311, "VIFY", d_viry);
|
DIGEN(000311, "VIRY", d_viry);
|
||||||
DIGEN(001113, "XVFY", d_xvfy);
|
DIGEN(001113, "XVFY", d_xvfy);
|
||||||
DIGEN(001304, "MDEI", d_mdxx);
|
DIGEN(001304, "MDEI", d_mdxx);
|
||||||
DIGEN(001305, "MDII", d_mdxx);
|
DIGEN(001305, "MDII", d_mdxx);
|
||||||
@@ -365,6 +365,8 @@ DIGEN(000723, "EVMX", d_uii);
|
|||||||
DIGEN(000721, "ERMX", d_uii);
|
DIGEN(000721, "ERMX", d_uii);
|
||||||
DIGEN(000515, "OSI", d_uii);
|
DIGEN(000515, "OSI", d_uii);
|
||||||
|
|
||||||
|
DIGEN(000617, "LPID", d_lpid);
|
||||||
|
|
||||||
/* initialize entire class 1 generics (shift group) to "badshift",
|
/* initialize entire class 1 generics (shift group) to "badshift",
|
||||||
then initialize each individual shift instruction */
|
then initialize each individual shift instruction */
|
||||||
|
|
||||||
|
|||||||
10
em.c
10
em.c
@@ -7162,18 +7162,22 @@ d_tstq: /* 0141757 */
|
|||||||
|
|
||||||
d_emcm: /* 000503 - enter machine check mode */
|
d_emcm: /* 000503 - enter machine check mode */
|
||||||
TRACE(T_FLOW, " EMCM\n");
|
TRACE(T_FLOW, " EMCM\n");
|
||||||
|
RESTRICT();
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
d_lmcm: /* 000501 - leave machine check mode */
|
d_lmcm: /* 000501 - leave machine check mode */
|
||||||
TRACE(T_FLOW, " LMCM\n");
|
TRACE(T_FLOW, " LMCM\n");
|
||||||
|
RESTRICT();
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
d_rmc: /* 000021 - reset machine check FF */
|
d_rmc: /* 000021 - reset machine check FF */
|
||||||
TRACE(T_FLOW, " RMC\n");
|
TRACE(T_FLOW, " RMC\n");
|
||||||
|
RESTRICT();
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
d_viry: /* 000311 - ucode verify */
|
d_viry: /* 000311 - ucode verify */
|
||||||
TRACE(T_FLOW, " VIRY\n");
|
TRACE(T_FLOW, " VIRY\n");
|
||||||
|
RESTRICT();
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
d_xvfy: /* 001113 - extended ucode verify */
|
d_xvfy: /* 001113 - extended ucode verify */
|
||||||
@@ -7190,6 +7194,7 @@ d_xvfy: /* 001113 - extended ucode verify */
|
|||||||
|
|
||||||
d_mdxx: /* 01304-01307, 01324 */
|
d_mdxx: /* 01304-01307, 01324 */
|
||||||
TRACE(T_FLOW, " MDxx\n");
|
TRACE(T_FLOW, " MDxx\n");
|
||||||
|
RESTRICT();
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
|
|
||||||
@@ -10036,6 +10041,11 @@ d_entr: /* 00103 */
|
|||||||
put16t(utempa,crs[S]);
|
put16t(utempa,crs[S]);
|
||||||
goto fetch;
|
goto fetch;
|
||||||
|
|
||||||
|
d_lpid: /* LPID 00617 */
|
||||||
|
TRACE(T_FLOW, " LPID\n");
|
||||||
|
RESTRICT();
|
||||||
|
goto d_uii;
|
||||||
|
|
||||||
d_badmr:
|
d_badmr:
|
||||||
printf("em: unknown memory reference, inst='%06o, opcode '%o, op index=%d\n", inst, opcode, opix);
|
printf("em: unknown memory reference, inst='%06o, opcode '%o, op index=%d\n", inst, opcode, opix);
|
||||||
fault(UIIFAULT, RPL, RP);
|
fault(UIIFAULT, RPL, RP);
|
||||||
|
|||||||
Reference in New Issue
Block a user