PDP11: Fix PC breakpoint check
Don't modify the CPU state when checking for physical address match on PC address breakpoints. Reported and verified by Lars.
This commit is contained in:
parent
c6a6c72c63
commit
253b8ec358
1 changed files with 2 additions and 1 deletions
|
@ -338,6 +338,7 @@ int32 relocR (int32 addr);
|
||||||
int32 relocW (int32 addr);
|
int32 relocW (int32 addr);
|
||||||
void relocR_test (int32 va, int32 apridx);
|
void relocR_test (int32 va, int32 apridx);
|
||||||
void relocW_test (int32 va, int32 apridx);
|
void relocW_test (int32 va, int32 apridx);
|
||||||
|
int32 relocC (int32 va, int32 sw);
|
||||||
t_bool PLF_test (int32 va, int32 apr);
|
t_bool PLF_test (int32 va, int32 apr);
|
||||||
void reloc_abort (int32 err, int32 apridx);
|
void reloc_abort (int32 err, int32 apridx);
|
||||||
int32 ReadE (int32 addr);
|
int32 ReadE (int32 addr);
|
||||||
|
@ -937,7 +938,7 @@ while (reason == 0) {
|
||||||
inst_psw = get_PSW ();
|
inst_psw = get_PSW ();
|
||||||
saved_sim_interval = sim_interval;
|
saved_sim_interval = sim_interval;
|
||||||
if (BPT_SUMM_PC) { /* possible breakpoint */
|
if (BPT_SUMM_PC) { /* possible breakpoint */
|
||||||
t_addr pa = relocR (PC | isenable); /* relocate PC */
|
t_addr pa = relocC (PC, 0); /* relocate PC */
|
||||||
if (sim_brk_test (PC, BPT_PCVIR) || /* Normal PC breakpoint? */
|
if (sim_brk_test (PC, BPT_PCVIR) || /* Normal PC breakpoint? */
|
||||||
sim_brk_test (pa, BPT_PCPHY)) /* Physical Address breakpoint? */
|
sim_brk_test (pa, BPT_PCPHY)) /* Physical Address breakpoint? */
|
||||||
ABORT (ABRT_BKPT); /* stop simulation */
|
ABORT (ABRT_BKPT); /* stop simulation */
|
||||||
|
|
Loading…
Add table
Reference in a new issue