1*49436Sbostic /*- 2*49436Sbostic * Copyright (c) 1988 The Regents of the University of California. 3*49436Sbostic * All rights reserved. 4*49436Sbostic * 5*49436Sbostic * %sccs.include.proprietary.c% 6*49436Sbostic * 7*49436Sbostic * @(#)kdbparam.h 7.4 (Berkeley) 05/08/91 834075Skarels */ 934075Skarels 1034075Skarels #define DBNAME "kdb\n" 1134075Skarels #define LPRMODE "%R" 1234075Skarels #define OFFMODE "+%R" 1334075Skarels 1434227Skarels #define KDB_IPL 0xf /* highest priority software interrupt */ 1534227Skarels #define setsoftkdb() mtpr(SIRR, KDB_IPL) 1634227Skarels 1734075Skarels #define MAXINT 0x7fffffff 1834075Skarels #define MAXSTOR (KERNBASE - ctob(UPAGES)) 1934075Skarels 2034075Skarels #define ENTRYMASK 1 /* check for entry masks */ 2143425Ssklower #define ishiddenreg(p) ((p) <= &kdbreglist[8]) 2234075Skarels 2334075Skarels #define BPT 03 2434075Skarels #define TBIT 020 2534075Skarels 2643425Ssklower #define clrsstep() (kdbpcb.pcb_psl &= ~TBIT) 2743425Ssklower #define setsstep() (kdbpcb.pcb_psl |= TBIT) 2834075Skarels 2934075Skarels #define SETBP(ins) (BPT | ((ins) & ~0xff)) 3034075Skarels 3143425Ssklower #define getprevpc(fp) kdbget((fp)+16, DSP) /* pc of caller */ 3243425Ssklower #define getprevframe(fp) (kdbget((fp)+12, DSP)&~2) /* fp of caller */ 3334075Skarels #define NOFRAME 0 /* fp at top of call stack */ 3434075Skarels 3534075Skarels #define issignalpc(pc) (MAXSTOR < (pc) && (pc) < MAXSTOR+ctob(UPAGES)) 3643425Ssklower #define getsignalpc(fp) kdbget((fp)+92, DSP) /* pc of caller before signal */ 3734075Skarels 3834075Skarels /* long to ints and back (puns) */ 3934075Skarels union { 4034075Skarels int I[2]; 4134075Skarels long L; 4234075Skarels } itolws; 4334075Skarels 4434075Skarels #define leng(a) itol(0,a) 4534075Skarels #define shorten(a) ((short)(a)) 4634075Skarels #define itol(a,b) (itolws.I[0]=(b), itolws.I[1]=(a), itolws.L) 4734075Skarels #define byte(a) ((a) & 0xff) 4834075Skarels #define btol(a) ((a)) 4934075Skarels 5034075Skarels /* check for address wrap around */ 5134075Skarels #define addrwrap(oaddr,newaddr) (((oaddr)^(newaddr)) >> 24) 5234075Skarels /* 5334075Skarels * INSTACK tells whether its argument is a stack address. 5434075Skarels * INUDOT tells whether its argument is in the (extended) u. area. 5534075Skarels * These are used for consistency checking and dont have to be exact. 5634075Skarels * 5734075Skarels * INKERNEL tells whether its argument is a kernel space address. 5834075Skarels * KVTOPH trims a kernel virtal address back to its offset 5934075Skarels * in the kernel address space. 6034075Skarels */ 6134075Skarels #define INSTACK(x) (((x)&0xf0000000) == 0x70000000) 6234075Skarels #define INUDOT(x) (((x)&0xf0000000) == 0x70000000) 6334075Skarels #define INKERNEL(x) (((x)&0xf0000000) == 0x80000000) 6434075Skarels 6534075Skarels #define KVTOPH(x) ((x)&~ 0x80000000) 6634075Skarels #define KERNOFF 0x80000000 67