Subversion Repositories planix.SVN

Rev

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

#define NSNAME          8
#define NSYM            50
#define NREG            16

#define NOPROF          (1<<0)
#define DUPOK           (1<<1)
#define ALLTHUMBS       (1<<2)

#define REGRET          0
#define REGARG          0
/* compiler allocates R1 up as temps */
/* compiler allocates register variables R2 up */
#define REGMIN          2
#define REGMAX          8
#define REGEXT          10
/* compiler allocates external registers R10 down */
#define REGTMP          11
#define REGSB           12
#define REGSP           13
#define REGLINK         14
#define REGPC           15

#define REGTMPT         7       /* used by the loader for thumb code */

#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,

        /* moved here to preserve values of older identifiers */
        ASQRTF,
        ASQRTD,

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

/* 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)

/* 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)

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