| // Inferno utils/5c/5.out.h | 
 | // http://code.google.com/p/inferno-os/source/browse/utils/5c/5.out.h | 
 | // | 
 | //	Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved. | 
 | //	Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) | 
 | //	Portions Copyright © 1997-1999 Vita Nuova Limited | 
 | //	Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) | 
 | //	Portions Copyright © 2004,2006 Bruce Ellis | 
 | //	Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) | 
 | //	Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others | 
 | //	Portions Copyright © 2009 The Go Authors.  All rights reserved. | 
 | // | 
 | // Permission is hereby granted, free of charge, to any person obtaining a copy | 
 | // of this software and associated documentation files (the "Software"), to deal | 
 | // in the Software without restriction, including without limitation the rights | 
 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
 | // copies of the Software, and to permit persons to whom the Software is | 
 | // furnished to do so, subject to the following conditions: | 
 | // | 
 | // The above copyright notice and this permission notice shall be included in | 
 | // all copies or substantial portions of the Software. | 
 | // | 
 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE | 
 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
 | // THE SOFTWARE. | 
 |  | 
 | #define	NSNAME		8 | 
 | #define	NSYM		50 | 
 | #define	NREG		16 | 
 |  | 
 | #define NOPROF		(1<<0) | 
 | #define DUPOK		(1<<1) | 
 | #define NOSPLIT		(1<<2) | 
 | #define	ALLTHUMBS	(1<<3) | 
 |  | 
 | #define	REGRET		0 | 
 | /* -1 disables use of REGARG */ | 
 | #define	REGARG		-1 | 
 | /* compiler allocates R1 up as temps */ | 
 | /* compiler allocates register variables R3 up */ | 
 | #define	REGEXT		10 | 
 | /* these two registers are declared in runtime.h */ | 
 | #define REGG        (REGEXT-0) | 
 | #define REGM        (REGEXT-1) | 
 | /* compiler allocates external registers R10 down */ | 
 | #define	REGTMP		11 | 
 | #define	REGSB		12 | 
 | #define	REGSP		13 | 
 | #define	REGLINK		14 | 
 | #define	REGPC		15 | 
 |  | 
 | #define	NFREG		8 | 
 | #define	FREGRET		0 | 
 | #define	FREGEXT		7 | 
 | #define	FREGTMP		15 | 
 | /* compiler allocates register variables F0 up */ | 
 | /* compiler allocates external registers F7 down */ | 
 |  | 
 | enum	as | 
 | { | 
 | 	AXXX, | 
 |  | 
 | 	AAND, | 
 | 	AEOR, | 
 | 	ASUB, | 
 | 	ARSB, | 
 | 	AADD, | 
 | 	AADC, | 
 | 	ASBC, | 
 | 	ARSC, | 
 | 	ATST, | 
 | 	ATEQ, | 
 | 	ACMP, | 
 | 	ACMN, | 
 | 	AORR, | 
 | 	ABIC, | 
 |  | 
 | 	AMVN, | 
 |  | 
 | 	AB, | 
 | 	ABL, | 
 |  | 
 | /* | 
 |  * Do not reorder or fragment the conditional branch | 
 |  * opcodes, or the predication code will break | 
 |  */ | 
 | 	ABEQ, | 
 | 	ABNE, | 
 | 	ABCS, | 
 | 	ABHS, | 
 | 	ABCC, | 
 | 	ABLO, | 
 | 	ABMI, | 
 | 	ABPL, | 
 | 	ABVS, | 
 | 	ABVC, | 
 | 	ABHI, | 
 | 	ABLS, | 
 | 	ABGE, | 
 | 	ABLT, | 
 | 	ABGT, | 
 | 	ABLE, | 
 |  | 
 | 	AMOVWD, | 
 | 	AMOVWF, | 
 | 	AMOVDW, | 
 | 	AMOVFW, | 
 | 	AMOVFD, | 
 | 	AMOVDF, | 
 | 	AMOVF, | 
 | 	AMOVD, | 
 |  | 
 | 	ACMPF, | 
 | 	ACMPD, | 
 | 	AADDF, | 
 | 	AADDD, | 
 | 	ASUBF, | 
 | 	ASUBD, | 
 | 	AMULF, | 
 | 	AMULD, | 
 | 	ADIVF, | 
 | 	ADIVD, | 
 | 	ASQRTF, | 
 | 	ASQRTD, | 
 |  | 
 | 	ASRL, | 
 | 	ASRA, | 
 | 	ASLL, | 
 | 	AMULU, | 
 | 	ADIVU, | 
 | 	AMUL, | 
 | 	ADIV, | 
 | 	AMOD, | 
 | 	AMODU, | 
 |  | 
 | 	AMOVB, | 
 | 	AMOVBU, | 
 | 	AMOVH, | 
 | 	AMOVHU, | 
 | 	AMOVW, | 
 | 	AMOVM, | 
 | 	ASWPBU, | 
 | 	ASWPW, | 
 |  | 
 | 	ANOP, | 
 | 	ARFE, | 
 | 	ASWI, | 
 | 	AMULA, | 
 |  | 
 | 	ADATA, | 
 | 	AGLOBL, | 
 | 	AGOK, | 
 | 	AHISTORY, | 
 | 	ANAME, | 
 | 	ARET, | 
 | 	ATEXT, | 
 | 	AWORD, | 
 | 	ADYNT_, | 
 | 	AINIT_, | 
 | 	ABCASE, | 
 | 	ACASE, | 
 |  | 
 | 	AEND, | 
 |  | 
 | 	AMULL, | 
 | 	AMULAL, | 
 | 	AMULLU, | 
 | 	AMULALU, | 
 |  | 
 | 	ABX, | 
 | 	ABXRET, | 
 | 	ADWORD, | 
 |  | 
 | 	ASIGNAME, | 
 |  | 
 | 	ALDREX, | 
 | 	ASTREX, | 
 | 	 | 
 | 	ALDREXD, | 
 | 	ASTREXD, | 
 |  | 
 | 	ALAST, | 
 | }; | 
 |  | 
 | /* scond byte */ | 
 | #define	C_SCOND	((1<<4)-1) | 
 | #define	C_SBIT	(1<<4) | 
 | #define	C_PBIT	(1<<5) | 
 | #define	C_WBIT	(1<<6) | 
 | #define	C_FBIT	(1<<7)	/* psr flags-only */ | 
 | #define	C_UBIT	(1<<7)	/* up bit, unsigned bit */ | 
 |  | 
 | #define C_SCOND_EQ	0 | 
 | #define C_SCOND_NE	1 | 
 | #define C_SCOND_HS	2 | 
 | #define C_SCOND_LO	3 | 
 | #define C_SCOND_MI	4 | 
 | #define C_SCOND_PL	5 | 
 | #define C_SCOND_VS	6 | 
 | #define C_SCOND_VC	7 | 
 | #define C_SCOND_HI	8 | 
 | #define C_SCOND_LS	9 | 
 | #define C_SCOND_GE	10 | 
 | #define C_SCOND_LT	11 | 
 | #define C_SCOND_GT	12 | 
 | #define C_SCOND_LE	13 | 
 | #define C_SCOND_NONE	14 | 
 | #define C_SCOND_NV	15 | 
 |  | 
 | /* D_SHIFT type */ | 
 | #define SHIFT_LL		0<<5 | 
 | #define SHIFT_LR		1<<5 | 
 | #define SHIFT_AR		2<<5 | 
 | #define SHIFT_RR		3<<5 | 
 |  | 
 | /* type/name */ | 
 | #define	D_GOK	0 | 
 | #define	D_NONE	1 | 
 |  | 
 | /* type */ | 
 | #define	D_BRANCH	(D_NONE+1) | 
 | #define	D_OREG		(D_NONE+2) | 
 | #define	D_CONST		(D_NONE+7) | 
 | #define	D_FCONST	(D_NONE+8) | 
 | #define	D_SCONST	(D_NONE+9) | 
 | #define	D_PSR		(D_NONE+10) | 
 | #define	D_REG		(D_NONE+12) | 
 | #define	D_FREG		(D_NONE+13) | 
 | #define	D_FILE		(D_NONE+16) | 
 | #define	D_OCONST	(D_NONE+17) | 
 | #define	D_FILE1		(D_NONE+18) | 
 |  | 
 | #define	D_SHIFT		(D_NONE+19) | 
 | #define	D_FPCR		(D_NONE+20) | 
 | #define	D_REGREG	(D_NONE+21) | 
 | #define	D_ADDR		(D_NONE+22) | 
 |  | 
 | #define	D_SBIG		(D_NONE+23) | 
 | #define	D_CONST2	(D_NONE+24) | 
 |  | 
 | /* name */ | 
 | #define	D_EXTERN	(D_NONE+3) | 
 | #define	D_STATIC	(D_NONE+4) | 
 | #define	D_AUTO		(D_NONE+5) | 
 | #define	D_PARAM		(D_NONE+6) | 
 |  | 
 | /* internal only */ | 
 | #define	D_SIZE		(D_NONE+40) | 
 | #define	D_PCREL		(D_NONE+41) | 
 |  | 
 | /* | 
 |  * this is the ranlib header | 
 |  */ | 
 | #define	SYMDEF	"__.SYMDEF" | 
 |  | 
 | /* | 
 |  * this is the simulated IEEE floating point | 
 |  */ | 
 | typedef	struct	ieee	Ieee; | 
 | struct	ieee | 
 | { | 
 | 	int32	l;	/* contains ls-man	0xffffffff */ | 
 | 	int32	h;	/* contains sign	0x80000000 | 
 | 				    exp		0x7ff00000 | 
 | 				    ms-man	0x000fffff */ | 
 | }; |