|
|
1.1 ! root 1: /* Copyright (c) 1979 Regents of the University of California */ ! 2: ! 3: /* static char sccsid[] = "@(#)pc.h 1.9 9/5/83"; */ ! 4: ! 5: #include <setjmp.h> ! 6: ! 7: /* ! 8: * random constants for pc ! 9: */ ! 10: ! 11: /* ! 12: * the name of the display. ! 13: */ ! 14: #define DISPLAYNAME "__disply" ! 15: ! 16: /* ! 17: * the structure below describes the locals used by the run time system. ! 18: * at function entry, at least this much space is allocated, ! 19: * and the following information is filled in: ! 20: * the address of a routine to close the current frame for unwinding, ! 21: * a pointer to the display entry for the current static level and ! 22: * the previous contents of the display for this static level. ! 23: * the curfile location is used to point to the currently active file, ! 24: * and is filled in as io is initiated. ! 25: * one of these structures is allocated on the (negatively growing) stack. ! 26: * at function entry, fp is set to point to the last field of the struct, ! 27: * thus the offsets of the fields are as indicated below. ! 28: */ ! 29: struct rtlocals { ! 30: jmp_buf gotoenv; ! 31: struct iorec *curfile; ! 32: struct dispsave dsave; ! 33: } rtlocs; ! 34: #define GOTOENVOFFSET ( -sizeof rtlocs ) ! 35: #define CURFILEOFFSET ( GOTOENVOFFSET + sizeof rtlocs.gotoenv ) ! 36: #define DSAVEOFFSET ( CURFILEOFFSET + sizeof rtlocs.curfile ) ! 37: ! 38: /* ! 39: * this is a cookie used to communicate between the ! 40: * routine entry code and the routine exit code. ! 41: * mostly it's for labels shared between the two. ! 42: */ ! 43: #ifdef vax ! 44: struct entry_exit_cookie { ! 45: struct nl *nlp; ! 46: char extname[BUFSIZ]; ! 47: int toplabel; ! 48: int savlabel; ! 49: }; ! 50: #define FRAME_SIZE_LABEL "LF" ! 51: #define SAVE_MASK_LABEL "L" ! 52: #endif vax ! 53: ! 54: #ifdef mc68000 ! 55: struct entry_exit_cookie { ! 56: struct nl *nlp; ! 57: char extname[BUFSIZ]; ! 58: int toplabel; ! 59: }; ! 60: #define FRAME_SIZE_LABEL "LF" ! 61: #define PAGE_BREAK_LABEL "LP" ! 62: #define SAVE_MASK_LABEL "LS" ! 63: #endif mc68000 ! 64: ! 65: /* ! 66: * formats for various names ! 67: * NAMEFORMAT arbitrary length strings. ! 68: * EXTFORMAT for externals, a preceding underscore. ! 69: * LABELFORMAT for label names, a preceding dollar-sign. ! 70: * PREFIXFORMAT used to print made up names with prefixes. ! 71: * LABELPREFIX with getlab() makes up label names. ! 72: * LLABELPREFIX with getlab() makes up sdb labels. ! 73: * FORMALPREFIX prefix for EXTFORMAT for formal entry points. ! 74: * a typical use might be to print out a name with a preceeding underscore ! 75: * with putprintf( EXTFORMAT , 0 , name ); ! 76: */ ! 77: #define NAMEFORMAT "%s" ! 78: #define EXTFORMAT "_%s" ! 79: #define LABELFORMAT "$%s" ! 80: #define PREFIXFORMAT "%s%d" ! 81: #define LABELPREFIX "L" ! 82: #define LLABELPREFIX "LL" ! 83: #define FORMALPREFIX "__" ! 84: ! 85: /* ! 86: * the name of the statement counter ! 87: */ ! 88: #define STMTCOUNT "__stcnt" ! 89: ! 90: /* ! 91: * the name of the pcp counters ! 92: */ ! 93: #define PCPCOUNT "__pcpcount" ! 94: ! 95: /* ! 96: * a vector of pointer to enclosing functions for fully qualified names. ! 97: */ ! 98: char *enclosing[ DSPLYSZ ]; ! 99: ! 100: #ifdef vax ! 101: /* ! 102: * the runtime framepointer and argumentpointer registers ! 103: */ ! 104: # define P2FP 13 ! 105: # define P2FPNAME "fp" ! 106: # define P2AP 12 ! 107: # define P2APNAME "ap" ! 108: ! 109: /* ! 110: * the register save mask for saving no registers ! 111: */ ! 112: # define RSAVEMASK ( 0 ) ! 113: ! 114: /* ! 115: * runtime check mask for divide check and integer overflow ! 116: */ ! 117: # define RUNCHECK ( ( 1 << 15 ) | ( 1 << 14 ) ) ! 118: ! 119: /* ! 120: * and of course ... ! 121: */ ! 122: # define BITSPERBYTE 8 ! 123: #endif vax ! 124: ! 125: #ifdef mc68000 ! 126: /* ! 127: * these magic numbers lifted from pcc/mac2defs ! 128: * the offsets are for mapping data and address register numbers ! 129: * to linear register numbers. e.g. d2 ==> r2, and a2 ==> r10. ! 130: */ ! 131: # define DATA_REG_OFFSET 0 ! 132: # define ADDR_REG_OFFSET 8 ! 133: # define P2FPNAME "a6" ! 134: # define P2FP (ADDR_REG_OFFSET + 6) ! 135: # define P2APNAME "a6" ! 136: # define P2AP (ADDR_REG_OFFSET + 6) ! 137: ! 138: /* ! 139: * and still ... ! 140: */ ! 141: # define BITSPERBYTE 8 ! 142: #endif mc68000
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.