123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- #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 */
- };
|