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