xref: /csrg-svn/usr.bin/pascal/src/tmps.h (revision 30029)
122252Sdist /*
222252Sdist  * Copyright (c) 1980 Regents of the University of California.
322252Sdist  * All rights reserved.  The Berkeley software License Agreement
422252Sdist  * specifies the terms and conditions for redistribution.
522252Sdist  *
6*30029Smckusick  *	@(#)tmps.h	5.2 (Berkeley) 11/12/86
722252Sdist  */
811339Speter 
911339Speter /*
1011339Speter  * The following structure is used
1111339Speter  * to keep track of the amount of variable
1211339Speter  * storage required by each block.
1311339Speter  * "Max" is the high water mark, "off"
1411339Speter  * the current need. Temporaries for "for"
1511339Speter  * loops and "with" statements are allocated
1611339Speter  * in the local variable area and these
1711339Speter  * numbers are thereby changed if necessary.
1811339Speter  *
1911339Speter  * for the compiler,
2011339Speter  *	low_water is the lowest number register allocated of its type
2111339Speter  *	next_avail is the next available register of its type
2211339Speter  */
2311339Speter 
2411339Speter #ifdef PC
2511339Speter #ifdef vax
2611339Speter     /*
2711339Speter      *	the number of register types.
2811339Speter      *	the details of how many of each kind of register there is
2911339Speter      *	(and what they are for) is known in tmps.c
3011339Speter      */
3111339Speter #define	NUMREGTYPES	1
3211339Speter #define	REG_GENERAL	0
3311339Speter #endif vax
3411339Speter 
35*30029Smckusick #ifdef tahoe
36*30029Smckusick     /*
37*30029Smckusick      *	the number of register types.
38*30029Smckusick      *	the details of how many of each kind of register there is
39*30029Smckusick      *	(and what they are for) is known in tmps.c
40*30029Smckusick      */
41*30029Smckusick #define	NUMREGTYPES	1
42*30029Smckusick #define	REG_GENERAL	0
43*30029Smckusick #endif tahoe
44*30029Smckusick 
4511339Speter #ifdef mc68000
4611339Speter     /*
4711339Speter      *	the number of register types.
4811339Speter      *	the details of how many of each kind of register there is
4911339Speter      *	(and what they are for) is known in tmps.c
5011339Speter      */
5111339Speter #define	NUMREGTYPES	2
5211339Speter #define	REG_DATA	0
5311339Speter #define	REG_ADDR	1
5411339Speter #endif mc68000
5511339Speter #endif PC
5611339Speter 
5711339Speter struct om {
5811339Speter 	long	om_max;
5911339Speter #ifdef PC
6011339Speter 	long	low_water[NUMREGTYPES];
6111339Speter #endif PC
6211339Speter 	struct tmps {
6311339Speter 	    long	om_off;
6411339Speter #ifdef PC
6511339Speter 	    long	next_avail[NUMREGTYPES];
6611339Speter #endif PC
6711339Speter 	}	curtmps;
6811339Speter } sizes[DSPLYSZ];
6911339Speter 
7011339Speter     /*
7111339Speter      *	an enumeration for whether a temporary can be a register.  cf. tmps.c
7211339Speter      */
7311339Speter #define NOREG 0
7411339Speter #define REGOK 1
75