13e12c5d1SDavid du Colombier /* 23e12c5d1SDavid du Colombier * adb - common definitions 33e12c5d1SDavid du Colombier * something of a grab-bag 43e12c5d1SDavid du Colombier */ 53e12c5d1SDavid du Colombier 6bd389b36SDavid du Colombier #include <u.h> 7bd389b36SDavid du Colombier #include <libc.h> 8bd389b36SDavid du Colombier #include <bio.h> 9bd389b36SDavid du Colombier #include <ctype.h> 103e12c5d1SDavid du Colombier 11bd389b36SDavid du Colombier #include <mach.h> 123e12c5d1SDavid du Colombier 134de34a7eSDavid du Colombier typedef ulong WORD; 144de34a7eSDavid du Colombier typedef uvlong ADDR; 153e12c5d1SDavid du Colombier 163e12c5d1SDavid du Colombier #define HUGEINT 0x7fffffff /* enormous WORD */ 173e12c5d1SDavid du Colombier 183e12c5d1SDavid du Colombier #define MAXOFF 0x1000000 193e12c5d1SDavid du Colombier #define INCDIR "/usr/lib/adb" 203e12c5d1SDavid du Colombier #define DBNAME "db\n" 213e12c5d1SDavid du Colombier #define CMD_VERBS "?/=>!$: \t" 223e12c5d1SDavid du Colombier 233e12c5d1SDavid du Colombier typedef int BOOL; 243e12c5d1SDavid du Colombier 253e12c5d1SDavid du Colombier #define MAXPOS 80 263e12c5d1SDavid du Colombier #define MAXLIN 128 273e12c5d1SDavid du Colombier #define ARB 512 283e12c5d1SDavid du Colombier #define MAXCOM 64 293e12c5d1SDavid du Colombier #define MAXARG 32 303e12c5d1SDavid du Colombier #define LINSIZ 4096 313e12c5d1SDavid du Colombier #define MAXSYM 255 323e12c5d1SDavid du Colombier 333e12c5d1SDavid du Colombier #define EOR '\n' 343e12c5d1SDavid du Colombier #define SPC ' ' 353e12c5d1SDavid du Colombier #define TB '\t' 363e12c5d1SDavid du Colombier 373e12c5d1SDavid du Colombier #define STDIN 0 383e12c5d1SDavid du Colombier #define STDOUT 1 393e12c5d1SDavid du Colombier 403e12c5d1SDavid du Colombier #define TRUE (-1) 413e12c5d1SDavid du Colombier #define FALSE 0 423e12c5d1SDavid du Colombier 433e12c5d1SDavid du Colombier 443e12c5d1SDavid du Colombier /* 453e12c5d1SDavid du Colombier * run modes 463e12c5d1SDavid du Colombier */ 473e12c5d1SDavid du Colombier 483e12c5d1SDavid du Colombier #define SINGLE 1 493e12c5d1SDavid du Colombier #define CONTIN 2 503e12c5d1SDavid du Colombier 513e12c5d1SDavid du Colombier /* 523e12c5d1SDavid du Colombier * breakpoints 533e12c5d1SDavid du Colombier */ 543e12c5d1SDavid du Colombier 553e12c5d1SDavid du Colombier #define BKPTCLR 0 /* not a real breakpoint */ 563e12c5d1SDavid du Colombier #define BKPTSET 1 /* real, ready to trap */ 573e12c5d1SDavid du Colombier #define BKPTSKIP 2 /* real, skip over it next time */ 583e12c5d1SDavid du Colombier #define BKPTTMP 3 /* temporary; clear when it happens */ 593e12c5d1SDavid du Colombier 604de34a7eSDavid du Colombier typedef struct bkpt BKPT; 613e12c5d1SDavid du Colombier struct bkpt { 623e12c5d1SDavid du Colombier ADDR loc; 633e12c5d1SDavid du Colombier uchar save[4]; 643e12c5d1SDavid du Colombier int count; 653e12c5d1SDavid du Colombier int initcnt; 663e12c5d1SDavid du Colombier int flag; 673e12c5d1SDavid du Colombier char comm[MAXCOM]; 684de34a7eSDavid du Colombier BKPT *nxtbkpt; 693e12c5d1SDavid du Colombier }; 703e12c5d1SDavid du Colombier 713e12c5d1SDavid du Colombier #define BADREG (-1) 723e12c5d1SDavid du Colombier 733e12c5d1SDavid du Colombier /* 743e12c5d1SDavid du Colombier * common globals 753e12c5d1SDavid du Colombier */ 763e12c5d1SDavid du Colombier 777dd7cddfSDavid du Colombier extern WORD adrval; 784de34a7eSDavid du Colombier extern uvlong expv; 793e12c5d1SDavid du Colombier extern int adrflg; 803e12c5d1SDavid du Colombier extern WORD cntval; 813e12c5d1SDavid du Colombier extern int cntflg; 823e12c5d1SDavid du Colombier extern WORD loopcnt; 833e12c5d1SDavid du Colombier extern ADDR maxoff; 843e12c5d1SDavid du Colombier extern ADDR localval; 853e12c5d1SDavid du Colombier extern ADDR maxfile; 863e12c5d1SDavid du Colombier extern ADDR maxstor; 873e12c5d1SDavid du Colombier 883e12c5d1SDavid du Colombier extern ADDR dot; 89*c93608ccSDavid du Colombier extern int dotinc; 903e12c5d1SDavid du Colombier 913e12c5d1SDavid du Colombier extern int xargc; 923e12c5d1SDavid du Colombier 933e12c5d1SDavid du Colombier extern BOOL wtflag; 943e12c5d1SDavid du Colombier extern char *corfil, *symfil; 953e12c5d1SDavid du Colombier extern int fcor, fsym; 963e12c5d1SDavid du Colombier extern BOOL mkfault; 973e12c5d1SDavid du Colombier extern BOOL regdirty; 983e12c5d1SDavid du Colombier 993e12c5d1SDavid du Colombier extern int pid; 1003e12c5d1SDavid du Colombier extern int pcsactive; 1013e12c5d1SDavid du Colombier #define NNOTE 10 1023e12c5d1SDavid du Colombier extern int nnote; 1039a747e4fSDavid du Colombier extern char note[NNOTE][ERRMAX]; 1043e12c5d1SDavid du Colombier 1053e12c5d1SDavid du Colombier extern int ending; 106219b2ee8SDavid du Colombier extern Map *cormap, *symmap, *dotmap; 1073e12c5d1SDavid du Colombier 1083e12c5d1SDavid du Colombier extern BKPT *bkpthead; 1093e12c5d1SDavid du Colombier extern int kflag; 1109a747e4fSDavid du Colombier extern int lastc, peekc; 111