|
|
1.1 ! root 1: /* ! 2: * machine-dependent code for controlling a process ! 3: * this for vax ! 4: */ ! 5: ! 6: #include "defs.h" ! 7: #include "bkpt.h" ! 8: #include "regs.h" ! 9: #include "space.h" ! 10: #include <machine/reg.h> ! 11: #include <machine/psl.h> ! 12: ! 13: ! 14: /* ! 15: * install (f != 0) or remove (f == 0) a breakpoint ! 16: */ ! 17: ! 18: #define BPT 0x4e4f /* Trap #15 */ ! 19: ! 20: extern ADDR txtsize; ! 21: bkput(bk, f) ! 22: register BKPT *bk; ! 23: { ! 24: register int sp; ! 25: ! 26: if (bk->loc < txtsize) ! 27: sp = CORF | INSTSP; ! 28: else ! 29: sp = CORF | DATASP; ! 30: if (f == 0) ! 31: sput(bk->loc, sp, wtos(bk->ins)); ! 32: else { ! 33: bk->ins = stow(sget(bk->loc, sp)); ! 34: sput(bk->loc, sp, wtos(BPT)); ! 35: if (errflg) { ! 36: printf("cannot set breakpoint: "); ! 37: /* stuff */ ! 38: prints(errflg); ! 39: } ! 40: } ! 41: } ! 42: ! 43: /* ! 44: * set psl to cause a trap after one instruction ! 45: * needed for v8; no ioctl to step pc ! 46: */ ! 47: ! 48: setstep() ! 49: { ! 50: ! 51: rput(PS, rget(PS) | PSL_T); ! 52: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.