Annotation of 41BSD/cmd/pi/pc.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.