-#if defined(vax) || defined(tahoe)
-
-/*
- * Find the location in the Pascal object where execution was suspended.
- *
- * We basically walk back through the frames looking for saved
- * register PCREG's. Each time we find one, we remember it. When we reach
- * the frame associated with the interpreter procedure, the most recently
- * saved register PCREG is the one we want.
- */
-
-typedef struct {
-#ifdef vax
- int fr_handler;
- unsigned int fr_psw : 16; /* saved psw */
- unsigned int fr_mask : 12; /* register save mask */
- unsigned int fr_unused : 1;
- unsigned int fr_s : 1; /* call was a calls, not callg */
- unsigned int fr_spa : 2; /* stack pointer alignment */
- unsigned int fr_savap; /* saved arg pointer */
- unsigned int fr_savfp; /* saved frame pointer */
- int fr_savpc; /* saved program counter */
-#endif
-#ifdef tahoe
- int fr_savpc; /* saved program counter */
- unsigned short fr_mask; /* register save mask */
- unsigned short fr_removed; /* (nargs+1)*4 */
- unsigned int fr_savfp; /* saved frame pointer */
-#endif
-} Stkframe;
-
-#define regsaved(frame, n) ((frame.fr_mask&(1 << n)) != 0)
-
-LOCAL ADDRESS fetchpc(framep)
-ADDRESS *framep;
-{
- register PROCESS *p;
- Stkframe sframe;
-#ifdef tahoe
-#define PCREGLOC (-1)
-#else
-#define PCREGLOC (sizeof sframe/sizeof(ADDRESS))
-#endif
- ADDRESS *savfp;
- ADDRESS r;
-
- p = process;
- r = p->reg[PCREG];
- if (p->fp == (ADDRESS) framep) {
- return r;
- }
- savfp = (ADDRESS *) p->fp;
-#ifdef tahoe
- savfp -= 2;
-#endif
- dread(&sframe, savfp, sizeof(sframe));
- while (sframe.fr_savfp != (int) framep && sframe.fr_savfp != 0) {
- if (regsaved(sframe, PCREG)) {
- dread(&r, savfp + PCREGLOC, sizeof(r));
- r -= sizeof(char);
- }
- savfp = (ADDRESS *) sframe.fr_savfp;
-#ifdef tahoe
- savfp -= 2;
-#endif
- dread(&sframe, savfp, sizeof(sframe));
- }
- if (sframe.fr_savfp == 0) {
- panic("resume: can't find interpreter frame 0x%x", framep);
- }
- if (regsaved(sframe, PCREG)) {
- dread(&r, savfp + PCREGLOC, sizeof(r));
- r -= sizeof(char);
- }
- return(r);
-}
-
-#endif
-