shithub: riscv

ref: 8726990cf563f72d91e1cb8335510d5a1d38ec02
dir: /sys/src/cmd/2c/2.out.h/

View raw version
#define	NSYM	50
#define	NSNAME	8

/* R0 is return */
#define	REGEXT	7
/* A7 is sp A6 is sb */
#define	AREGEXT	5
/* F0 is ret */
#define	FREGEXT	7

enum	as
{
	AXXX = 0,
	AABCD,
	AADDB,
	AADDL,
	AADDW,
	AADDXB,
	AADDXL,
	AADDXW,
	AADJSP,
	AANDB,
	AANDL,
	AANDW,
	AASLB,
	AASLL,
	AASLW,
	AASRB,
	AASRL,
	AASRW,
	ABCASE,
	ABCC,
	ABCHG,
	ABCLR,
	ABCS,
	ABEQ,
	ABFCHG,
	ABFCLR,
	ABFEXTS,
	ABFEXTU,
	ABFFFO,
	ABFINS,
	ABFSET,
	ABFTST,
	ABGE,
	ABGT,
	ABHI,
	ABKPT,
	ABLE,
	ABLS,
	ABLT,
	ABMI,
	ABNE,
	ABPL,
	ABRA,
	ABSET,
	ABSR,
	ABTST,
	ABVC,
	ABVS,
	ACALLM,
	ACAS2B,
	ACAS2L,
	ACAS2W,
	ACASB,
	ACASEW,
	ACASL,
	ACASW,
	ACHK2B,
	ACHK2L,
	ACHK2W,
	ACHKL,
	ACHKW,
	ACLRB,
	ACLRL,
	ACLRW,
	ACMP2B,
	ACMP2L,
	ACMP2W,
	ACMPB,
	ACMPL,
	ACMPW,
	ADATA,
	ADBCC,
	ADBCS,
	ADBEQ,
	ADBF,
	ADBGE,
	ADBGT,
	ADBHI,
	ADBLE,
	ADBLS,
	ADBLT,
	ADBMI,
	ADBNE,
	ADBPL,
	ADBT,
	ADBVC,
	ADBVS,
	ADIVSL,
	ADIVSW,
	ADIVUL,
	ADIVUW,
	AEND,
	AEORB,
	AEORL,
	AEORW,
	AEXG,
	AEXTBL,
	AEXTBW,
	AEXTWL,
	AFABSB,
	AFABSD,
	AFABSF,
	AFABSL,
	AFABSW,
	AFACOSB,
	AFACOSD,
	AFACOSF,
	AFACOSL,
	AFACOSW,
	AFADDB,
	AFADDD,
	AFADDF,
	AFADDL,
	AFADDW,
	AFASINB,
	AFASIND,
	AFASINF,
	AFASINL,
	AFASINW,
	AFATANB,
	AFATAND,
	AFATANF,
	AFATANHB,
	AFATANHD,
	AFATANHF,
	AFATANHL,
	AFATANHW,
	AFATANL,
	AFATANW,
	AFBEQ,
	AFBF,
	AFBGE,
	AFBGT,
	AFBLE,
	AFBLT,
	AFBNE,
	AFBT,
	AFCMPB,
	AFCMPD,
	AFCMPF,
	AFCMPL,
	AFCMPW,
	AFCOSB,
	AFCOSD,
	AFCOSF,
	AFCOSHB,
	AFCOSHD,
	AFCOSHF,
	AFCOSHL,
	AFCOSHW,
	AFCOSL,
	AFCOSW,
	AFDBEQ,
	AFDBF,
	AFDBGE,
	AFDBGT,
	AFDBLE,
	AFDBLT,
	AFDBNE,
	AFDBT,
	AFDIVB,
	AFDIVD,
	AFDIVF,
	AFDIVL,
	AFDIVW,
	AFETOXB,
	AFETOXD,
	AFETOXF,
	AFETOXL,
	AFETOXM1B,
	AFETOXM1D,
	AFETOXM1F,
	AFETOXM1L,
	AFETOXM1W,
	AFETOXW,
	AFGETEXPB,
	AFGETEXPD,
	AFGETEXPF,
	AFGETEXPL,
	AFGETEXPW,
	AFGETMANB,
	AFGETMAND,
	AFGETMANF,
	AFGETMANL,
	AFGETMANW,
	AFINTB,
	AFINTD,
	AFINTF,
	AFINTL,
	AFINTRZB,
	AFINTRZD,
	AFINTRZF,
	AFINTRZL,
	AFINTRZW,
	AFINTW,
	AFLOG10B,
	AFLOG10D,
	AFLOG10F,
	AFLOG10L,
	AFLOG10W,
	AFLOG2B,
	AFLOG2D,
	AFLOG2F,
	AFLOG2L,
	AFLOG2W,
	AFLOGNB,
	AFLOGND,
	AFLOGNF,
	AFLOGNL,
	AFLOGNP1B,
	AFLOGNP1D,
	AFLOGNP1F,
	AFLOGNP1L,
	AFLOGNP1W,
	AFLOGNW,
	AFMODB,
	AFMODD,
	AFMODF,
	AFMODL,
	AFMODW,
	AFMOVEB,
	AFMOVED,
	AFMOVEF,
	AFMOVEL,
	AFMOVEM,
	AFMOVEMC,
	AFMOVEW,
	AFMULB,
	AFMULD,
	AFMULF,
	AFMULL,
	AFMULW,
	AFNEGB,
	AFNEGD,
	AFNEGF,
	AFNEGL,
	AFNEGW,
	AFREMB,
	AFREMD,
	AFREMF,
	AFREML,
	AFREMW,
	AFRESTORE,
	AFSAVE,
	AFSCALEB,
	AFSCALED,
	AFSCALEF,
	AFSCALEL,
	AFSCALEW,
	AFSEQ,
	AFSF,
	AFSGE,
	AFSGT,
	AFSINB,
	AFSIND,
	AFSINF,
	AFSINHB,
	AFSINHD,
	AFSINHF,
	AFSINHL,
	AFSINHW,
	AFSINL,
	AFSINW,
	AFSLE,
	AFSLT,
	AFSNE,
	AFSQRTB,
	AFSQRTD,
	AFSQRTF,
	AFSQRTL,
	AFSQRTW,
	AFST,
	AFSUBB,
	AFSUBD,
	AFSUBF,
	AFSUBL,
	AFSUBW,
	AFTANB,
	AFTAND,
	AFTANF,
	AFTANHB,
	AFTANHD,
	AFTANHF,
	AFTANHL,
	AFTANHW,
	AFTANL,
	AFTANW,
	AFTENTOXB,
	AFTENTOXD,
	AFTENTOXF,
	AFTENTOXL,
	AFTENTOXW,
	AFTSTB,
	AFTSTD,
	AFTSTF,
	AFTSTL,
	AFTSTW,
	AFTWOTOXB,
	AFTWOTOXD,
	AFTWOTOXF,
	AFTWOTOXL,
	AFTWOTOXW,
	AGLOBL,
	AGOK,
	AHISTORY,
	AILLEG,
	AINSTR,
	AJMP,
	AJSR,
	ALEA,
	ALINKL,
	ALINKW,
	ALOCATE,
	ALONG,
	ALSLB,
	ALSLL,
	ALSLW,
	ALSRB,
	ALSRL,
	ALSRW,
	AMOVB,
	AMOVEM,
	AMOVEPL,
	AMOVEPW,
	AMOVESB,
	AMOVESL,
	AMOVESW,
	AMOVL,
	AMOVW,
	AMULSL,
	AMULSW,
	AMULUL,
	AMULUW,
	ANAME,
	ANBCD,
	ANEGB,
	ANEGL,
	ANEGW,
	ANEGXB,
	ANEGXL,
	ANEGXW,
	ANOP,
	ANOTB,
	ANOTL,
	ANOTW,
	AORB,
	AORL,
	AORW,
	APACK,
	APEA,
	ARESET,
	AROTLB,
	AROTLL,
	AROTLW,
	AROTRB,
	AROTRL,
	AROTRW,
	AROXLB,
	AROXLL,
	AROXLW,
	AROXRB,
	AROXRL,
	AROXRW,
	ARTD,
	ARTE,
	ARTM,
	ARTR,
	ARTS,
	ASBCD,
	ASCC,
	ASCS,
	ASEQ,
	ASF,
	ASGE,
	ASGT,
	ASHI,
	ASLE,
	ASLS,
	ASLT,
	ASMI,
	ASNE,
	ASPL,
	AST,
	ASTOP,
	ASUBB,
	ASUBL,
	ASUBW,
	ASUBXB,
	ASUBXL,
	ASUBXW,
	ASVC,
	ASVS,
	ASWAP,
	ASYS,
	ATAS,
	ATEXT,
	ATRAP,
	ATRAPCC,
	ATRAPCS,
	ATRAPEQ,
	ATRAPF,
	ATRAPGE,
	ATRAPGT,
	ATRAPHI,
	ATRAPLE,
	ATRAPLS,
	ATRAPLT,
	ATRAPMI,
	ATRAPNE,
	ATRAPPL,
	ATRAPT,
	ATRAPV,
	ATRAPVC,
	ATRAPVS,
	ATSTB,
	ATSTL,
	ATSTW,
	AUNLK,
	AUNPK,
	AWORD,
	ASIGNAME,

	ALAST
};

enum
{
	NREG		= 8,

	D_R0		= 0,
	D_A0		= NREG,
	D_F0		= D_A0+NREG,
	D_NONE		= D_F0+NREG,
	D_TOS,
	D_BRANCH,
	D_STACK,
	D_TREE,
	D_EXTERN,
	D_STATIC,
	D_AUTO,
	D_PARAM,
	D_CONST,
	D_FCONST,
	D_QUICK,

	D_CCR,
	D_SR,
	D_SFC,
	D_CACR,
	D_USP,
	D_VBR,
	D_CAAR,
	D_MSP,
	D_ISP,
	D_DFC,
	D_FPCR,
	D_FPSR,
	D_FPIAR,
	D_SCONST,
	D_FILE,

	D_TC,		/* new for 68040 */
	D_ITT0,
	D_ITT1,
	D_DTT0,
	D_DTT1,
	D_MMUSR,
	D_URP,
	D_SRP,

	D_FILE1,

	D_MASK		= 63/(D_SRP>=63?0:1),

	I_DIR		= (D_MASK+1)*0,
	I_INDINC	= (D_MASK+1)*1,
	I_INDDEC	= (D_MASK+1)*2,
	I_INDIR		= (D_MASK+1)*3,
	I_ADDR		= (D_MASK+1)*4,

	I_INDEX1	= (D_MASK+1)*1,
	I_INDEX2	= (D_MASK+1)*2,
	I_INDEX3	= (D_MASK+1)*3,

	I_MASK		= (D_MASK+1)*7,

	T_FIELD		= 1<<0,
	T_INDEX		= 1<<1,
	T_TYPE		= 1<<2,
	T_OFFSET	= 1<<3,
	T_FCONST	= 1<<4,
	T_SYM		= 1<<5,
	T_SCONST	= 1<<6
};

/*
 * 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 */
};