1 /*- 2 * Copyright (c) 1980 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)tmps.h 5.3 (Berkeley) 04/16/91 8 */ 9 10 /* 11 * The following structure is used 12 * to keep track of the amount of variable 13 * storage required by each block. 14 * "Max" is the high water mark, "off" 15 * the current need. Temporaries for "for" 16 * loops and "with" statements are allocated 17 * in the local variable area and these 18 * numbers are thereby changed if necessary. 19 * 20 * for the compiler, 21 * low_water is the lowest number register allocated of its type 22 * next_avail is the next available register of its type 23 */ 24 25 #ifdef PC 26 #ifdef vax 27 /* 28 * the number of register types. 29 * the details of how many of each kind of register there is 30 * (and what they are for) is known in tmps.c 31 */ 32 #define NUMREGTYPES 1 33 #define REG_GENERAL 0 34 #endif vax 35 36 #ifdef tahoe 37 /* 38 * the number of register types. 39 * the details of how many of each kind of register there is 40 * (and what they are for) is known in tmps.c 41 */ 42 #define NUMREGTYPES 1 43 #define REG_GENERAL 0 44 #endif tahoe 45 46 #ifdef mc68000 47 /* 48 * the number of register types. 49 * the details of how many of each kind of register there is 50 * (and what they are for) is known in tmps.c 51 */ 52 #define NUMREGTYPES 2 53 #define REG_DATA 0 54 #define REG_ADDR 1 55 #endif mc68000 56 #endif PC 57 58 struct om { 59 long om_max; 60 #ifdef PC 61 long low_water[NUMREGTYPES]; 62 #endif PC 63 struct tmps { 64 long om_off; 65 #ifdef PC 66 long next_avail[NUMREGTYPES]; 67 #endif PC 68 } curtmps; 69 } sizes[DSPLYSZ]; 70 71 /* 72 * an enumeration for whether a temporary can be a register. cf. tmps.c 73 */ 74 #define NOREG 0 75 #define REGOK 1 76