mirror of
https://github.com/prirun/p50em.git
synced 2026-01-16 00:03:55 +00:00
moved pio tests to R-mode so that V-mode doesn't check for pio
Perf increase from 12.3 MIPS to 12.5 MIPS
This commit is contained in:
parent
3e4c98c296
commit
8bdffd4e56
41
em.c
41
em.c
@ -4207,9 +4207,6 @@ fetch:
|
||||
crs[MODALS] &= 077777; /* inhibit interrupts */
|
||||
}
|
||||
|
||||
/* as a speedup later, fetch 32/64 bits (or the rest of the page)
|
||||
and maintain a prefetch queue */
|
||||
|
||||
gvp->prevpc = RP;
|
||||
#if 0
|
||||
/* NOTE: Rev 21 Sys Arch Guide, 2nd Ed, pg 3-32 says:
|
||||
@ -6538,25 +6535,9 @@ d_smcs: /* 0101200 */
|
||||
RESTRICT();
|
||||
goto fetch;
|
||||
|
||||
#if 0
|
||||
/* NOTE: this is the clock display instruction skip, but appears
|
||||
goofy to me, and looks more like an I/O instruction:
|
||||
|
||||
unrecognized skip instruction 101704 at 6/3174
|
||||
Fatal error: instruction #106825755 at 6/3173: 101704 677
|
||||
keys = 14200, modals=100177
|
||||
|
||||
*/
|
||||
|
||||
if (inst == 0101704) { /* skip if machine check flop is set */
|
||||
TRACE(T_FLOW, " clock SKP?\n");
|
||||
INCRP;
|
||||
goto fetch;
|
||||
#endif
|
||||
|
||||
d_badgen:
|
||||
TRACEA(" unrecognized generic instruction!\n");
|
||||
printf("#%d: %o/%o: Unrecognized generic instruction '%o!\n", gvp->instcount, RPH, RPL, inst);
|
||||
printf("em: #%d %o/%o: Unrecognized generic instruction '%o!\n", gvp->instcount, RPH, RPL, inst);
|
||||
//gvp->traceflags = ~TB_MAP;
|
||||
fault(UIIFAULT, RPL, RP);
|
||||
fatal(NULL);
|
||||
@ -8441,14 +8422,6 @@ imodepcl:
|
||||
|
||||
nonimode:
|
||||
|
||||
/* here for non-generic instructions: memory references or pio */
|
||||
/* pio can only occur in S/R modes */
|
||||
|
||||
if (!(crs[KEYS] & 010000) && (inst & 036000) == 030000) {
|
||||
pio(inst);
|
||||
goto fetch;
|
||||
}
|
||||
|
||||
/* get x bit and adjust opcode so that PMA manual opcode
|
||||
references can be used directly, ie, if the PMA manual says the
|
||||
opcode is '15 02, then 01502 can be used here. If the PMA
|
||||
@ -8489,13 +8462,25 @@ nonimode:
|
||||
stopwatch_push(&sw_ea);
|
||||
switch ((crs[KEYS] >> 10) & 7) {
|
||||
case 0: /* 16S */
|
||||
if (opcode == 01400) {
|
||||
pio(inst);
|
||||
goto fetch;
|
||||
}
|
||||
ea = ea16s(inst, x);
|
||||
break;
|
||||
case 1: /* 32S */
|
||||
if (opcode == 01400) {
|
||||
pio(inst);
|
||||
goto fetch;
|
||||
}
|
||||
ea = ea32s(inst, x);
|
||||
break;
|
||||
case 2: /* 64R */
|
||||
case 3: /* 32R */
|
||||
if (opcode == 01400) {
|
||||
pio(inst);
|
||||
goto fetch;
|
||||
}
|
||||
ea = ea32r64r(earp, inst, x, &opcode);
|
||||
break;
|
||||
case 4: /* 32I */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user