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