forsyth20121205-174063a80cc13 years agoHistory
419 lines · 4.6 KB · C
RawDownload
/* * powerpc 64 */#define	NSNAME	8#define	NSYM	50#define	NREG	32 #define NOPROF	(1<<0)#define DUPOK	(1<<1) enum{	REGZERO		= 0,	/* set to zero */	REGSP		= 1,	REGSB		= 2,	REGRET		= 3,	REGARG		= 3,	REGMIN		= 7,	/* register variables allocated from here to REGMAX */	REGMAX		= 27,	REGEXT		= 30,	/* external registers allocated from here down */	REGTMP		= 31,	/* used by the linker */ 	FREGRET		= 0,	FREGMIN		= 17,	/* first register variable */	FREGEXT		= 26,	/* first external register */	FREGCVI		= 27, /* floating conversion constant */	FREGZERO	= 28,	/* both float and double */	FREGHALF	= 29,	/* double */	FREGONE		= 30,	/* double */	FREGTWO		= 31	/* double *//* * GENERAL: * * compiler allocates R3 up as temps * compiler allocates register variables R7-R27 * compiler allocates external registers R30 down * * compiler allocates register variables F17-F26 * compiler allocates external registers F26 down */}; enum	as{	AXXX	= 0,	AADD,	AADDCC,	AADDV,	AADDVCC,	AADDC,	AADDCCC,	AADDCV,	AADDCVCC,	AADDME,	AADDMECC,	AADDMEVCC,	AADDMEV,	AADDE,	AADDECC,	AADDEVCC,	AADDEV,	AADDZE,	AADDZECC,	AADDZEVCC,	AADDZEV,	AAND,	AANDCC,	AANDN,	AANDNCC,	ABC,	ABCL,	ABEQ,	ABGE,	ABGT,	ABL,	ABLE,	ABLT,	ABNE,	ABR,	ABVC,	ABVS,	ACMP,	ACMPU,	ACNTLZW,	ACNTLZWCC,	ACRAND,	ACRANDN,	ACREQV,	ACRNAND,	ACRNOR,	ACROR,	ACRORN,	ACRXOR,	ADIVW,	ADIVWCC,	ADIVWVCC,	ADIVWV,	ADIVWU,	ADIVWUCC,	ADIVWUVCC,	ADIVWUV,	AEQV,	AEQVCC,	AEXTSB,	AEXTSBCC,	AEXTSH,	AEXTSHCC,	AFABS,	AFABSCC,	AFADD,	AFADDCC,	AFADDS,	AFADDSCC,	AFCMPO,	AFCMPU,	AFCTIW,	AFCTIWCC,	AFCTIWZ,	AFCTIWZCC,	AFDIV,	AFDIVCC,	AFDIVS,	AFDIVSCC,	AFMADD,	AFMADDCC,	AFMADDS,	AFMADDSCC,	AFMOVD,	AFMOVDCC,	AFMOVDU,	AFMOVS,	AFMOVSU,	AFMSUB,	AFMSUBCC,	AFMSUBS,	AFMSUBSCC,	AFMUL,	AFMULCC,	AFMULS,	AFMULSCC,	AFNABS,	AFNABSCC,	AFNEG,	AFNEGCC,	AFNMADD,	AFNMADDCC,	AFNMADDS,	AFNMADDSCC,	AFNMSUB,	AFNMSUBCC,	AFNMSUBS,	AFNMSUBSCC,	AFRSP,	AFRSPCC,	AFSUB,	AFSUBCC,	AFSUBS,	AFSUBSCC,	AMOVMW,	ALSW,	ALWAR,	AMOVWBR,	AMOVB,	AMOVBU,	AMOVBZ,	AMOVBZU,	AMOVH,	AMOVHBR,	AMOVHU,	AMOVHZ,	AMOVHZU,	AMOVW,	AMOVWU,	AMOVFL,	AMOVCRFS,	AMTFSB0,	AMTFSB0CC,	AMTFSB1,	AMTFSB1CC,	AMULHW,	AMULHWCC,	AMULHWU,	AMULHWUCC,	AMULLW,	AMULLWCC,	AMULLWVCC,	AMULLWV,	ANAND,	ANANDCC,	ANEG,	ANEGCC,	ANEGVCC,	ANEGV,	ANOR,	ANORCC,	AOR,	AORCC,	AORN,	AORNCC,	AREM,	AREMCC,	AREMV,	AREMVCC,	AREMU,	AREMUCC,	AREMUV,	AREMUVCC,	ARFI,	ARLWMI,	ARLWMICC,	ARLWNM,	ARLWNMCC,	ASLW,	ASLWCC,	ASRW,	ASRAW,	ASRAWCC,	ASRWCC,	ASTSW,	ASTWCCC,	ASUB,	ASUBCC,	ASUBVCC,	ASUBC,	ASUBCCC,	ASUBCV,	ASUBCVCC,	ASUBME,	ASUBMECC,	ASUBMEVCC,	ASUBMEV,	ASUBV,	ASUBE,	ASUBECC,	ASUBEV,	ASUBEVCC,	ASUBZE,	ASUBZECC,	ASUBZEVCC,	ASUBZEV,	ASYNC,	AXOR,	AXORCC, 	ADCBF,	ADCBI,	ADCBST,	ADCBT,	ADCBTST,	ADCBZ,	AECIWX,	AECOWX,	AEIEIO,	AICBI,	AISYNC,	APTESYNC,	ATLBIE,	ATLBIEL,	ATLBSYNC,	ATW, 	ASYSCALL,	ADATA,	AGLOBL,	AGOK,	AHISTORY,	ANAME,	ANOP,	ARETURN,	ATEXT,	AWORD,	AEND,	ADYNT,	AINIT,	ASIGNAME, 	ARFCI, 	/* optional on 32-bit */	AFRES,	AFRESCC,	AFRSQRTE,	AFRSQRTECC,	AFSEL,	AFSELCC,	AFSQRT,	AFSQRTCC,	AFSQRTS,	AFSQRTSCC, 	/* 64-bit */		ACNTLZD,	ACNTLZDCC,	ACMPW,	/* CMP with L=0 */	ACMPWU,	ADIVD,	ADIVDCC,	ADIVDVCC,	ADIVDV,	ADIVDU,	ADIVDUCC,	ADIVDUVCC,	ADIVDUV,	AEXTSW,	AEXTSWCC,	/* AFCFIW; AFCFIWCC */	AFCFID,	AFCFIDCC,	AFCTID,	AFCTIDCC,	AFCTIDZ,	AFCTIDZCC,	ALDAR,	AMOVD,	AMOVDU,	AMOVWZ,	AMOVWZU,	AMULHD,	AMULHDCC,	AMULHDU,	AMULHDUCC,	AMULLD,	AMULLDCC,	AMULLDVCC,	AMULLDV,	ARFID,	ARLDMI,	ARLDMICC,	ARLDC,	ARLDCCC,	ARLDCR,	ARLDCRCC,	ARLDCL,	ARLDCLCC,	ASLBIA,	ASLBIE,	ASLBMFEE,	ASLBMFEV,	ASLBMTE,	ASLD,	ASLDCC,	ASRD,	ASRAD,	ASRADCC,	ASRDCC,	ASTDCCC,	ATD, 	/* 64-bit pseudo operation */	ADWORD,	AREMD,	AREMDCC,	AREMDV,	AREMDVCC,	AREMDU,	AREMDUCC,	AREMDUV,	AREMDUVCC, 	/* more 64-bit operations */	AHRFID, 	ALAST}; /* type/name */enum{	D_GOK	= 0,	D_NONE, /* name */	D_EXTERN,	D_STATIC,	D_AUTO,	D_PARAM, /* type */	D_BRANCH,	D_OREG,	D_CONST,	D_FCONST,	D_SCONST,	D_REG,	D_FPSCR,	D_MSR,	D_FREG,	D_CREG,	D_SPR,	D_OPT,	/* branch/trap option */	D_FILE,	D_FILE1,	D_DCR,	/* device control register */	D_DCONST, /* reg names iff type is D_SPR */	D_XER	= 1,	D_LR	= 8,	D_CTR	= 9	/* and many supervisor level registers */}; /* * this is the ranlib header */#define	SYMDEF	"__.SYMDEF" /* * this is the simulated IEEE floating point */typedef	struct	ieee	Ieee;struct	ieee{	long	l;	/* contains ls-man	0xffffffff */	long	h;	/* contains sign	0x80000000				    exp		0x7ff00000				    ms-man	0x000fffff */};