1*49437Sbostic /*- 2*49437Sbostic * Copyright (c) 1988 The Regents of the University of California. 3*49437Sbostic * All rights reserved. 434407Skarels * 5*49437Sbostic * %sccs.include.proprietary.c% 6*49437Sbostic * 7*49437Sbostic * @(#)kdbparam.h 7.9 (Berkeley) 05/08/91 834407Skarels */ 930114Ssam 1030114Ssam #define DBNAME "kdb\n" 1130114Ssam #define LPRMODE "%R" 1230114Ssam #define OFFMODE "+%R" 1330114Ssam 1430114Ssam #define MAXINT 0x7fffffff 1530114Ssam #define MAXSTOR (KERNBASE - ctob(UPAGES)) 1630114Ssam 1730134Ssam #define ENTRYMASK 1 /* check for entry masks */ 1841360Ssklower #define ishiddenreg(p) ((p) <= &kdbreglist[8]) 1930134Ssam 2030114Ssam #define BPT 0x30 2130114Ssam #define KCALL 0xcf 2230114Ssam #define CASEL 0xfc 2330114Ssam #define TBIT 0x10 2430114Ssam 2530628Skarels #define KDB_IPL 0xf /* highest priority software interrupt */ 2630628Skarels #define setsoftkdb() mtpr(SIRR, KDB_IPL) 2730628Skarels 2841360Ssklower #define clrsstep() (kdbpcb.pcb_psl &= ~TBIT) 2941360Ssklower #define setsstep() (kdbpcb.pcb_psl |= TBIT) 3030134Ssam 3130114Ssam #define SETBP(ins) ((BPT<<24) | ((ins) & 0xffffff)) 3230114Ssam 3341360Ssklower #define getprevpc(fp) kdbget((off_t)(fp)-8, DSP) /* pc of caller */ 3441360Ssklower #define getprevframe(fp) (kdbget((off_t)(fp), DSP)&~3) /* fp of caller */ 3541360Ssklower #define getnargs(fp) (((kdbget((off_t)(fp)-4, DSP)&0xffff)-4)/4) 3630134Ssam #define nextarg(ap) ((ap) + 4) /* next argument in list */ 3730134Ssam #define NOFRAME 0 /* fp at top of call stack */ 3830114Ssam 3930297Ssam #define issignalpc(pc) ((unsigned)MAXSTOR < (pc) && (pc) < (unsigned)KERNBASE) 4041360Ssklower #define getsignalpc(fp) kdbget((off_t)(fp)+44, DSP)/* pc of caller before signal */ 4130134Ssam 4230114Ssam #define leng(a) ((long)((unsigned)(a))) 4330114Ssam #define shorten(a) (((a) >> 16) & 0xffff) 4430297Ssam #define itol(a,b) ((long)(((a) << 16) | ((b) & 0xffff))) 4530114Ssam #define byte(a) (((a) >> 24) & 0xff) 4630297Ssam #define btol(a) ((long)((a) << 24)) 4730114Ssam 4830134Ssam /* check for address wrap around */ 4930134Ssam #define addrwrap(oaddr,newaddr) \ 5030134Ssam (((oaddr)^(newaddr)) >> 24) 5130114Ssam /* 5230114Ssam * INSTACK tells whether its argument is a stack address. 5330114Ssam * INUDOT tells whether its argument is in the (extended) u. area. 5430114Ssam * These are used for consistency checking and dont have to be exact. 5530114Ssam * 5630114Ssam * INKERNEL tells whether its argument is a kernel space address. 5730114Ssam * KVTOPH trims a kernel virtal address back to its offset 5830114Ssam * in the kernel address space. 5930114Ssam */ 6030114Ssam #define INSTACK(x) (((int)(x)&0xf0000000) == 0xb0000000) 6130114Ssam #define INUDOT(x) (((int)(x)&0xf0000000) == 0xb0000000) 6230114Ssam #define INKERNEL(x) (((int)(x)&0xf0000000) == 0xc0000000) 6330114Ssam 6430114Ssam #define KERNOFF (KERNBASE + 0x800) /* start of kernel's text */ 6530628Skarels /* #define KVTOPH(x) ((x)&~ 0xc0000000) sometimes */ 66