1 /*
2  * db - common definitions
3  * something of a grab-bag
4  */
5 
6 #include <u.h>
7 #include <libc.h>
8 #include <bio.h>
9 #include <ctype.h>
10 
11 #include <mach.h>
12 
13 typedef long WORD;
14 typedef u64int ADDR;
15 
16 #define	HUGEINT	0x7fffffff	/* enormous WORD */
17 
18 #define	MAXOFF	0x1000000
19 #define	INCDIR	"/usr/lib/adb"
20 #define	DBNAME	"db\n"
21 #define CMD_VERBS	"?/=>!$: \t"
22 
23 typedef	int	BOOL;
24 
25 #define MAXPOS	80
26 #define MAXLIN	128
27 #define	ARB	512
28 #define MAXCOM	64
29 #define MAXARG	32
30 #define LINSIZ	4096
31 #define	MAXSYM	255
32 
33 #define EOR	'\n'
34 #define SPC	' '
35 #define TB	'\t'
36 
37 #define	STDIN	0
38 #define	STDOUT	1
39 
40 #define	TRUE	(-1)
41 #define	FALSE	0
42 
43 
44 /*
45  * run modes
46  */
47 
48 #define	SINGLE	1
49 #define	CONTIN	2
50 
51 /*
52  * breakpoints
53  */
54 
55 #define	BKPTCLR	0	/* not a real breakpoint */
56 #define BKPTSET	1	/* real, ready to trap */
57 #define BKPTSKIP 2	/* real, skip over it next time */
58 #define	BKPTTMP	3	/* temporary; clear when it happens */
59 
60 struct bkpt {
61 	ADDR	loc;
62 	uchar	save[4];
63 	int	count;
64 	int	initcnt;
65 	int	flag;
66 	char	comm[MAXCOM];
67 	struct bkpt *nxtbkpt;
68 };
69 typedef struct bkpt	BKPT;
70 
71 #define	BADREG	(-1)
72 
73 /*
74  * common globals
75  */
76 
77 extern	WORD	adrval;
78 extern	vlong	expv;
79 extern	int	adrflg;
80 extern	WORD	cntval;
81 extern	int	cntflg;
82 extern	WORD	loopcnt;
83 extern	ADDR	maxoff;
84 extern	ADDR	localval;
85 extern	ADDR	maxfile;
86 extern	ADDR	maxstor;
87 
88 extern	ADDR	dot;
89 extern	WORD	dotinc;
90 
91 extern	int	xargc;
92 
93 extern	BOOL	wtflag;
94 extern	char	*corfil, *symfil;
95 extern	BOOL	mkfault;
96 extern	BOOL	regdirty;
97 
98 extern	int	pid;
99 extern	int	pcsactive;
100 #define	NNOTE 10
101 extern	int	nnote;
102 extern	char	note[NNOTE][ERRMAX];
103 
104 extern	int	ending;
105 extern	Map	*dotmap;
106 
107 extern	BKPT	*bkpthead;
108 extern	int	kflag;
109 extern	int	lastc, peekc;
110