BSD 4_1_snap release
[unix-history] / usr / src / cmd / pi / pc.h
CommitLineData
f31c0eb1
PK
1/* Copyright (c) 1979 Regents of the University of California */
2
4b9ccde7 3/* static char sccsid[] = "@(#)pc.h 1.3 4/1/81"; */
f31c0eb1
PK
4
5 /*
6 * random constants for pc
7 */
8
9 /*
10 * the name of the display.
f31c0eb1
PK
11 */
12#define DISPLAYNAME "__disply"
f31c0eb1
PK
13
14 /*
15 * the structure below describes the locals used by the run time system.
16 * at function entry, at least this much space is allocated,
17 * and the following information is filled in:
18 * the address of a routine to close the current frame for unwinding,
19 * a pointer to the display entry for the current static level and
20 * the previous contents of the display for this static level.
21 * the curfile location is used to point to the currently active file,
22 * and is filled in as io is initiated.
23 * one of these structures is allocated on the (negatively growing) stack.
24 * at function entry, fp is set to point to the last field of the struct,
25 * thus the offsets of the fields are as indicated below.
26 */
27struct rtlocals {
28 struct iorec *curfile;
29 struct dispsave dsave;
30 struct dispsave *dptr;
31 int (*unwind)();
32} rtlocs;
33#define CURFILEOFFSET ( ( -sizeof rtlocs ) + sizeof rtlocs.unwind )
34#define DSAVEOFFSET ( CURFILEOFFSET + sizeof rtlocs.curfile )
35#define DPTROFFSET ( DSAVEOFFSET + sizeof rtlocs.dsave )
36#define UNWINDOFFSET ( DPTROFFSET + sizeof rtlocs.dptr )
37#define UNWINDNAME "_UNWIND"
38
39 /*
40 * the register save mask for saving no registers
41 */
42#define RSAVEMASK ( 0 )
43
44 /*
45 * runtime check mask for divide check and integer overflow
46 */
47#define RUNCHECK ( ( 1 << 15 ) | ( 1 << 14 ) )
48
49 /*
50 * formats for various names
51 * NAMEFORMAT arbitrary length strings.
52 * EXTFORMAT for externals, a preceding underscore.
53 * PREFIXFORMAT used to print made up names with prefixes.
54 * LABELPREFIX with getlab() makes up label names.
55 * LLABELPREFIX with getlab() makes up sdb labels.
e641ce92 56 * FORMALPREFIX prefix for EXTFORMAT for formal entry points.
f31c0eb1
PK
57 * a typical use might be to print out a name with a preceeding underscore
58 * with putprintf( EXTFORMAT , 0 , name );
59 */
60#define NAMEFORMAT "%s"
61#define EXTFORMAT "_%s"
62#define PREFIXFORMAT "%s%d"
63#define LABELPREFIX "L"
64#define LLABELPREFIX "LL"
e641ce92 65#define FORMALPREFIX "__"
f31c0eb1
PK
66
67 /*
68 * the name of the statement counter
69 */
70#define STMTCOUNT "__stcnt"
71
72 /*
73 * the name of the pcp counters
74 */
75#define PCPCOUNT "__pcpcount"
76
77 /*
78 * a vector of pointer to enclosing functions for fully qualified names.
79 */
80char *enclosing[ DSPLYSZ ];
81
82 /*
83 * and of course ...
84 */
85#define BITSPERBYTE 8
86
87 /*
88 * error number for case label not found (ECASE)
89 * stolen from ~mckusick/px/lib/h01errs.h
90 */
91#define ECASE 5