File:  [Research Unix] / researchv9 / cmd / sun / pcc / machdep2.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:59 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

/*	@(#)machdep2.h 1.1 86/02/03 SMI	*/

/*
 * Copyright (c) 1985 by Sun Microsystems, Inc.
 */

#ifdef VAX
extern int fregs;
extern int maxargs;
#else
# define SAVEREGION 8 /* number of bytes for save area */
#endif

extern SUTYPE fregs;

#ifdef VAX
# define BYTEOFF(x) ((x)&03)
#else
# define BYTEOFF(x) ((x)&01)
#endif
# define wdal(k) (BYTEOFF(k)==0)
# define BITOOR(x) ((x)>>3)  /* bit offset to oreg offset */


#ifdef VAX
# define REGSZ 16
# define TMPREG FP
#else
# define REGSZ (3*8) /* three banks of eight each */
/* # define FREETEMP */ /* define these for temporaries at SP+(offset) */
/* # define TMPREG SP */
# define TMPREG A6
# define TMPMAX (0x7fff*8) /* temps must be addressable by 16-bit offset */
			   /* temp addressing is internally in bits      */
#endif

#define R2REGS   /* permit double indexing */

# define STOARG(p)     /* just evaluate the arguments, and be done with it... */
# define STOFARG(p)
# define STOSTARG(p)
# define genfcall(a,b) gencall(a,b)

# define NESTCALLS

# define MYREADER(p) myreader(p)
int optim2();
#ifdef VAX
# define special(a, b) 0
#endif


#ifndef VAX
	/* shape for constants between -128 and 127 */
/* # define SCCON (SPECIAL+100) */
	/* shape for constants between 0 and 32767 */
# define SICON (SPECIAL+101)
	/* shape for constants between 1 and 8 */
# define S8CON (SPECIAL+102)
	/* shape for appropriate FLD nodes (should be using MULTILEVEL here, but .. */
#define SPEC_FLD (SPECIAL+103)
#define SPEC_FLT (SPECIAL+104)
#define SPEC_DFLT (SPECIAL+105)
#define SBASE (SPECIAL+106)
#define SXREG (SPECIAL+107)
#define SNONPOW2 (SPECIAL+108)
#define SFLOAT_SRCE (SPECIAL+109)
#define SPEC_PVT (SPECIAL+110)
#define SAUTOINC (SPECIAL+111)
#define SZEROLB (SPECIAL+112)
#define SFZERO (SPECIAL+113)


#define fltused _fltused
extern int fltused, usesky;
extern int chk_ovfl;

#define R2UPKFLGS(flags,shortx,ibit,scale)\
{	scale = flags&15;\
	flags >>= 4;\
	ibit = flags&1;\
	flags >>= 1;\
	shortx = flags&1;\
}

#define R2PACKFLGS(flags,shortx,ibit,scale)\
{	flags = shortx;\
	flags <<= 1;\
	flags |= ibit;\
	flags <<= 4;\
	flags |= scale;\
}

/* 
 * this stuff is for dealing with compound su-numbers: they are 4 chars
 * in a struct. Three are currently used.
 * They represent the number of registers of each of the (three) types
 * necessary to carry out a calculation.
 */

#define SUPRINT( v ) printf(", SU = (%d,%d,%d)\n", v.d, v.a, v.f)
#define SUTOOBIG( v ) (v.d>fregs.d || v.a>fregs.a || v.f>fregs.f)
#define SUSUM( v ) (v.d + v.a + v.f)
#define SUTEST( v ) (SUSUM(v) != 0)
#define SUGT( a, b) (SUSUM(a) > SUSUM(b))


/*
 * tags for identifying machine-specific code templates in table.c
 */

#define OP68020    0x80000000	/* match only if(use68020)   */
#define NO68020    0x40000000	/* match only if(!use68020)  */
#define OP68881    0x20000000	/* match only if(use68881)   */
#define NO68881    0x10000000	/* match only if(!use68881)  */
#define OP68SPEC   0xf0000000	/* mask out all of the above */

#endif not VAX

#define szty(t)	((t)==DOUBLE? 2 : 1)
#define needpair(r,t) ((t)==DOUBLE && !iscreg(r))
#define rewfld(p)  1
#define callreg(p) D0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.