From 235ce92ff23dc26a33397f2a0c4b2c9f9f378d74 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 28 Oct 2014 10:19:39 -0700 Subject: [PATCH] PDP11: Correct proper boot support for PDP11 devices when booting via a Remote Console Master session --- PDP11/pdp11_cpu.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/PDP11/pdp11_cpu.c b/PDP11/pdp11_cpu.c index e5458d09..ba38d650 100644 --- a/PDP11/pdp11_cpu.c +++ b/PDP11/pdp11_cpu.c @@ -739,7 +739,21 @@ while (reason == 0) { saved_PC = PC & 0177777; pcq_r->qptr = pcq_p; /* update pc q ptr */ set_r_display (rs, cm); + reason = sim_process_event (); /* process events */ + + /* restore simh register contents into running variables */ + PC = saved_PC; + put_PSW (PSW, 0); /* set PSW, call calc_xs */ + for (i = 0; i < 6; i++) + R[i] = REGFILE[i][rs]; + SP = STACKFILE[cm]; + isenable = calc_is (cm); + dsenable = calc_ds (cm); + put_PIRQ (PIRQ); /* rewrite PIRQ */ + STKLIM = STKLIM & STKLIM_RW; /* clean up STKLIM */ + MMR0 = MMR0 | MMR0_IC; /* usually on */ + trap_req = calc_ints (ipl, trap_req); /* recalc int req */ continue; } /* end if sim_interval */ @@ -3085,7 +3099,7 @@ return FALSE; void cpu_set_boot (int32 pc) { -saved_PC = PC = pc; +saved_PC = pc; PSW = 000340; return; }