1
0
mirror of https://github.com/open-simh/simh.git synced 2026-05-03 06:39:03 +00:00

All VAX: Adjust sim_interval by reasonable amount for string instructions

Previously sim_interval was adjusted by 1 plus the total number of bytes
referenced in string instructions (SCANC, SPANC, LOCC, SKPC, CMPC3,
CMPC5, MOVC3, MOVC5).  Since the amount of data that a string
instruction can reference is arbitrarily large (32bit size), the adjustment
to sim_interval could be ridiculously excessive.  This can result in wild
variances in clock calibration when large string data are referenced.
This commit is contained in:
Mark Pizzolato
2017-01-17 15:58:55 -08:00
parent d9688833f9
commit 1555056396
3 changed files with 11 additions and 8 deletions

View File

@@ -263,6 +263,7 @@ int32 ibufl, ibufh; /* prefetch buf */
int32 ibcnt, ppc; /* prefetch ctl */
uint32 cpu_idle_mask = VAX_IDLE_VMS; /* idle mask */
uint32 cpu_idle_type = 1; /* default VMS */
int32 extra_bytes; /* bytes referenced by current string instruction */
jmp_buf save_env;
REG *pcq_r = NULL; /* PC queue reg ptr */
int32 pcq[PCQ_SIZE] = { 0 }; /* PC queue */
@@ -702,7 +703,8 @@ for ( ;; ) {
ABORT (STOP_IBKPT); /* stop simulation */
}
sim_interval = sim_interval - 1; /* count instr */
sim_interval = sim_interval - (1 + (extra_bytes>>5));/* count instr */
extra_bytes = 0; /* digest string count */
GET_ISTR (opc, L_BYTE); /* get opcode */
if (opc == 0xFD) { /* 2 byte op? */
GET_ISTR (opc, L_BYTE); /* get second byte */