BSD 4_3_Tahoe development
[unix-history] / usr / src / lib / pcc / pcc.tahoe / mac2defs.h
/* mac2defs.h 1.4 88/01/19 */
/*
* Tahoe Registers
*/
/*
* Scratch registers
*/
#define R0 0
#define R1 1
#define R2 2
#define R3 3
#define R4 4
#define R5 5
/*
* Register variables
*/
#define R6 6
#define R7 7
#define R8 8
#define R9 9
#define R10 10
#define R11 11
#define R12 12
/*
* Special purpose registers
*/
#define FP 13 /* frame pointer */
#define SP 14 /* stack pointer */
#define PC 15 /* program counter */
/*
* Floating registers
*/
#define ACC 16 /* accumulator */
#define TMPREG FP /* reg off which temporaries are referenced */
#define REGSZ 16 /* size of register set */
#define R2REGS 1 /* permit double indexing */
extern int fregs;
extern int maxargs;
#define BYTEOFF(x) ((x)&03)
#define wdal(k) (BYTEOFF(k)==0) /* word align */
#define BITOOR(x) ((x)>>3) /* bit offset to oreg offset */
/*
* Some macros used in store():
* just evaluate the arguments, and be done with it...
*/
#define STOARG(p)
#define STOFARG(p)
#define STOSTARG(p)
/*
* Some short routines that get called an awful lot are actually macros.
*/
#define szty(t) ((t) == DOUBLE ? 2 : 1)
#define shltype(o, p) \
((o) == REG || (o) == NAME || (o) == ICON || \
(o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left)))
#define ncopy(q, p) ((q)->in = (p)->in)
#define MYREADER(p) myreader(p)
int optim2();
#define SIREG (SPECIAL|7) /* indexed OREG */
int special(); /* additional special shapes */
#define callchk(p) if ((p)->in.op != FORTCALL) allchk()