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:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user