BSD 4_3_Reno development
[unix-history] / usr / src / libexec / pcc / ccom.vax / mac2defs.h
CommitLineData
a74bbe85
C
1/* mac2defs.h 4.2 85/08/23 */
2
3/*
4 * VAX-11/780 Registers
5 */
6
7/*
8 * Scratch registers
9 */
10#define R0 0
11#define R1 1
12#define R2 2
13#define R3 3
14#define R4 4
15#define R5 5
16
17/*
18 * Register variables
19 */
20#define R6 6
21#define R7 7
22#define R8 8
23#define R9 9
24#define R10 10
25#define R11 11
26
27/*
28 * Special purpose registers
29 */
30#define AP 12 /* argument pointer */
31#define FP 13 /* frame pointer */
32#define SP 14 /* stack pointer */
33#define PC 15 /* program counter */
34
35#define REGSZ 16
36#define TMPREG FP
37
38#define R2REGS 1 /* permit double indexing */
39
40extern int fregs;
41extern int maxargs;
42
43#define BYTEOFF(x) ((x)&03)
44#define wdal(k) (BYTEOFF(k)==0) /* word align */
45#define BITOOR(x) ((x)>>3) /* bit offset to oreg offset */
46
47/*
48 * Some macros used in store():
49 * just evaluate the arguments, and be done with it...
50 */
51#define STOARG(p)
52#define STOFARG(p)
53#define STOSTARG(p)
54#define genfcall(a,b) gencall(a,b)
55
56/*
57 * Some short routines that get called an awful lot are actually macros.
58 */
59#if defined(FORT) || defined(SPRECC)
60#define szty(t) ((t) == DOUBLE ? 2 : 1)
61#else
62#define szty(t) (((t) == DOUBLE || (t) == FLOAT) ? 2 : 1)
63#endif
64#define shltype(o, p) \
65 ((o) == REG || (o) == NAME || (o) == ICON || \
66 (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left)))
67#define ncopy(q, p) ((q)->in = (p)->in)
68
69#define MYREADER(p) myreader(p)
70int optim2();
71
72/* This indicates there are no additional special shapes, see match.c */
73#define special(a, b) 0