Annotation of 40BSD/cmd/pc0/pc.h, revision 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.