Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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