1 /* defs.h 4.6 86/03/26 */ 2 3 /* 4 * adb - vax string table version; common definitions 5 */ 6 #include <sys/param.h> 7 8 #include <machine/psl.h> 9 #ifdef NEWVM 10 typedef unsigned long Ooff_t; 11 #define off_t Ooff_t 12 #include <hp300/pte.h> 13 #else 14 #include <machine/pte.h> 15 #endif 16 17 #include <sys/user.h> 18 19 #include <ctype.h> 20 #include <a.out.h> 21 #include <sys/ptrace.h> 22 23 #ifdef NEWVM 24 #undef TRUE 25 #undef FALSE 26 #endif 27 #include "mac.h" 28 #include "mode.h" 29 #include "head.h" 30 31 /* access modes */ 32 #define RD 0 33 #define WT 1 34 35 #define NSP 0 36 #define ISP 1 37 #define DSP 2 38 #define STAR 4 39 #define PSP 8 40 #define STARCOM 0200 41 42 #ifdef pdp11 43 I guess I should look this up in the 2.10 source... 44 #endif 45 46 #ifdef vax 47 /* 48 * Symbol types, used internally in calls to findsym routine. 49 * One the VAX this all degenerates since I & D symbols are indistinct. 50 * Basically we get NSYM==0 for `=' command, ISYM==DSYM otherwise. 51 */ 52 #define NSYM 0 53 #define DSYM 1 /* Data space symbol */ 54 #define ISYM DSYM /* Instruction space symbol == DSYM on VAX */ 55 56 #define BKPTSET 1 57 #define BKPTEXEC 2 58 59 #define USERPS PSL 60 #define USERPC PC 61 #define BPT 03 62 #define TBIT 020 63 #define FD 0200 64 #define getradj(i) 0 65 #define lget get 66 67 /* puns from <sys/ptrace.h> */ 68 #define CONTIN PT_CONTINUE 69 #define SINGLE PT_STEP 70 71 /* the quantities involving ctob() are located in the kernel stack. */ 72 /* the others are in the pcb. */ 73 #define KSP 0 74 #define ESP 4 75 #define SSP 8 76 #define USP (ctob(UPAGES)-5*sizeof(int)) 77 78 /* should read this in from reg.h */ 79 #define R0 (ctob(UPAGES)-18*sizeof(int)) 80 #define R1 (ctob(UPAGES)-17*sizeof(int)) 81 #define R2 (ctob(UPAGES)-16*sizeof(int)) 82 #define R3 (ctob(UPAGES)-15*sizeof(int)) 83 #define R4 (ctob(UPAGES)-14*sizeof(int)) 84 #define R5 (ctob(UPAGES)-13*sizeof(int)) 85 #define R6 (ctob(UPAGES)-12*sizeof(int)) 86 #define R7 (ctob(UPAGES)-11*sizeof(int)) 87 #define R8 (ctob(UPAGES)-10*sizeof(int)) 88 #define R9 (ctob(UPAGES)-9*sizeof(int)) 89 #define R10 (ctob(UPAGES)-8*sizeof(int)) 90 #define R11 (ctob(UPAGES)-7*sizeof(int)) 91 #define AP (ctob(UPAGES)-21*sizeof(int)) 92 #define FP (ctob(UPAGES)-20*sizeof(int)) 93 #define PC (ctob(UPAGES)-2*sizeof(int)) 94 #define PSL (ctob(UPAGES)-1*sizeof(int)) 95 96 #define P0BR 80 97 #define P0LR 84 98 #define P1BR 88 99 #define P1LR 92 100 #endif 101 102 #ifdef hp300 103 #define NSYM 0 /* ??? */ 104 #define DSYM 1 /* Data space symbol */ 105 #define ISYM DSYM /* Instruction space symbol */ 106 107 #define BKPTSET 1 108 #define BKPTEXEC 2 109 110 extern L_INT getradj(); 111 112 #define BPT 0x4e42 113 114 /* puns from <sys/ptrace.h> */ 115 #define CONTIN PT_CONTINUE 116 #define SINGLE PT_STEP 117 118 /* 119 * Appropriated from dbx (returning a favor) 120 * `10' comes from: 121 * (4) stack starts 4 bytes in from end of uarea 122 * (2) trap type 0 frame format word is 2 bytes back from that 123 * (4) trap type 0 pc is 4 bytes back from that 124 */ 125 #define regloc(reg) (ctob(UPAGES) + (sizeof(int) * ((reg) - 17)) - 10) 126 127 /* select map */ 128 #define mapptr(s) (((s)&DSP)?&datmap:(((s)&PSP)?&physmap:&txtmap)) 129 130 #define KSP 12 /* who knows? */ 131 132 /* should read this in from reg.h */ 133 #define D0 regloc(0) 134 #define D1 regloc(1) 135 #define D2 regloc(2) 136 #define D3 regloc(3) 137 #define D4 regloc(4) 138 #define D5 regloc(5) 139 #define D6 regloc(6) 140 #define D7 regloc(7) 141 #define A0 regloc(8) 142 #define A1 regloc(9) 143 #define A2 regloc(10) 144 #define A3 regloc(11) 145 #define A4 regloc(12) 146 #define A5 regloc(13) 147 #define A6 regloc(14) 148 #define A7 regloc(15) 149 /* 150 * In 4.4 these have changed, stackadj (pad) field is 4 bytes not 2 151 * so PSW/PC are 2 bytes further away from D0. 152 */ 153 #if defined(BSD4_4) || defined(HPBSD) 154 #define PSW (regloc(16)+2) 155 #define PC (regloc(17)+2) 156 #else 157 #define PSW regloc(16) 158 #define PC regloc(17) 159 #endif 160 #define FP A6 161 #define USP A7 162 163 #define P0BR 60 164 #define P0LR 64 165 #define P1BR 68 166 #define P1LR 72 167 168 #define FP0 332 169 #define FP1 344 170 #define FP2 356 171 #define FP3 368 172 #define FP4 380 173 #define FP5 392 174 #define FP6 404 175 #define FP7 416 176 #define FPCR 428 177 #define FPSR 432 178 #define FPIAR 436 179 #endif 180 181 #if !defined(pdp11) && !defined(vax) && !defined(hp300) 182 183 "edit this file to accommodate your machine's addressing" 184 185 #endif 186 187 #define MAXOFF 255 188 #define MAXPOS 80 189 #define MAXLIN 128 190 #define EOR '\n' 191 #define SP ' ' 192 #define TB '\t' 193 #define QUOTE 0200 194 #define STRIP 0177 195 #define EVEN -2 196 197 /* long to ints and back (puns) */ 198 union { 199 INT I[2]; 200 L_INT L; 201 } itolws; 202 203 #ifdef pdp11 204 #define leng(a) ((long)((unsigned)(a))) 205 #define shorten(a) ((int)(a)) 206 #define itol(a,b) (itolws.I[0]=(a), itolws.I[1]=(b), itolws.L) 207 #define lobyte(a) ((a) & 0377) 208 #endif 209 210 #ifdef vax 211 #define leng(a) itol(0,a) 212 #define shorten(a) ((short)(a)) 213 #define itol(a,b) (itolws.I[0]=(b), itolws.I[1]=(a), itolws.L) 214 #define lobyte(a) ((a) & 0377) 215 #endif 216 217 #ifdef mc68000 218 #define leng(a) itol(0,a) 219 #define shorten(a) ((short)(a)) 220 #define itol(a,b) (itolws.I[0]=(a), itolws.I[1]=(b), itolws.L) 221 #define lobyte(a) (((a) >> 8) & 0377) 222 #endif 223 224 #if !defined(vax) && !defined(pdp11) && !defined(mc68000) 225 226 "edit this file to suit your machine's byte order" 227 228 #endif 229 230 /* result type declarations */ 231 L_INT inkdot(); 232 POS get(); 233 POS chkget(); 234 POS lchkget(); 235 STRING exform(); 236 L_INT round(); 237 BKPTR scanbkpt(); 238 VOID fault(); 239 240 struct pcb pcb; 241 int kernel; 242 int kcore; 243 struct pte *sbr; 244 int slr; 245 int masterpcbb; 246