summaryrefslogtreecommitdiff
path: root/utils/kc/k.out.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/kc/k.out.h')
-rw-r--r--utils/kc/k.out.h263
1 files changed, 263 insertions, 0 deletions
diff --git a/utils/kc/k.out.h b/utils/kc/k.out.h
new file mode 100644
index 00000000..2b3bd7f2
--- /dev/null
+++ b/utils/kc/k.out.h
@@ -0,0 +1,263 @@
+#define NSNAME 8
+#define NSYM 50
+#define NREG 32
+#define NOPROF (1<<0)
+#define DUPOK (1<<1)
+
+enum
+{
+ REGZERO = 0, /* always zero */
+ REGSP = 1, /* stack pointer */
+ REGSB = 2, /* static pointer */
+ REGSB1 = 3, /* (possible) second static pointer */
+ REGEXT = 6, /* first external register, grows-- */
+ REGRET = 7, /* return register and first temp, grows++ */
+ REGTMP = 14, /* used by the loader */
+ REGLINK = 15, /* subroutine linkage */
+ REGARG = 7, /* first arg passed in */
+
+ FREGRET = 0,
+ FREGEXT = 22, /* first external register */
+ FREGZERO = 24, /* both float and double */
+ FREGHALF = 26, /* double */
+ FREGONE = 28, /* double */
+ FREGTWO = 30 /* double */
+/*
+ * GENERAL:
+ *
+ * compiler allocates R7 up as temps
+ * compiler allocates external registers R6 down
+ * compiler allocates register variables F4-F22
+ * compiler allocates external registers F22 down
+ */
+};
+
+enum as
+{
+ AXXX = 0,
+ AADD,
+ AADDCC,
+ AADDX,
+ AADDXCC,
+ AAND,
+ AANDCC,
+ AANDN,
+ AANDNCC,
+ ABA,
+ ABCC,
+ ABCS,
+ ABE,
+ ABG,
+ ABGE,
+ ABGU,
+ ABL,
+ ABLE,
+ ABLEU,
+ ABN,
+ ABNE,
+ ABNEG,
+ ABPOS,
+ ABVC,
+ ABVS,
+ ACB0,
+ ACB01,
+ ACB012,
+ ACB013,
+ ACB02,
+ ACB023,
+ ACB03,
+ ACB1,
+ ACB12,
+ ACB123,
+ ACB13,
+ ACB2,
+ ACB23,
+ ACB3,
+ ACBA,
+ ACBN,
+ ACMP, /* pseudo op */
+ ACPOP1,
+ ACPOP2,
+ ADATA,
+ ADIV,
+ ADIVL,
+ AFABSD, /* pseudo op */
+ AFABSF,
+ AFABSX, /* pseudo op */
+ AFADDD,
+ AFADDF,
+ AFADDX,
+ AFBA,
+ AFBE,
+ AFBG,
+ AFBGE,
+ AFBL,
+ AFBLE,
+ AFBLG,
+ AFBN,
+ AFBNE,
+ AFBO,
+ AFBU,
+ AFBUE,
+ AFBUG,
+ AFBUGE,
+ AFBUL,
+ AFBULE,
+ AFCMPD,
+ AFCMPED,
+ AFCMPEF,
+ AFCMPEX,
+ AFCMPF,
+ AFCMPX,
+ AFDIVD,
+ AFDIVF,
+ AFDIVX,
+ AFMOVD, /* pseudo op */
+ AFMOVDF,
+ AFMOVDW,
+ AFMOVDX,
+ AFMOVF,
+ AFMOVFD,
+ AFMOVFW,
+ AFMOVFX,
+ AFMOVWD,
+ AFMOVWF,
+ AFMOVWX,
+ AFMOVX, /* pseudo op */
+ AFMOVXD,
+ AFMOVXF,
+ AFMOVXW,
+ AFMULD,
+ AFMULF,
+ AFMULX,
+ AFNEGD, /* pseudo op */
+ AFNEGF,
+ AFNEGX, /* pseudo op */
+ AFSQRTD,
+ AFSQRTF,
+ AFSQRTX,
+ AFSUBD,
+ AFSUBF,
+ AFSUBX,
+ AGLOBL,
+ AGOK,
+ AHISTORY,
+ AIFLUSH,
+ AJMPL,
+ AJMP,
+ AMOD,
+ AMODL,
+ AMOVB,
+ AMOVBU,
+ AMOVD,
+ AMOVH,
+ AMOVHU,
+ AMOVW,
+ AMUL,
+ AMULSCC,
+ ANAME,
+ ANOP,
+ AOR,
+ AORCC,
+ AORN,
+ AORNCC,
+ ARESTORE,
+ ARETT,
+ ARETURN,
+ ASAVE,
+ ASLL,
+ ASRA,
+ ASRL,
+ ASUB,
+ ASUBCC,
+ ASUBX,
+ ASUBXCC,
+ ASWAP,
+ ATA,
+ ATADDCC,
+ ATADDCCTV,
+ ATAS,
+ ATCC,
+ ATCS,
+ ATE,
+ ATEXT,
+ ATG,
+ ATGE,
+ ATGU,
+ ATL,
+ ATLE,
+ ATLEU,
+ ATN,
+ ATNE,
+ ATNEG,
+ ATPOS,
+ ATSUBCC,
+ ATSUBCCTV,
+ ATVC,
+ ATVS,
+ AUNIMP,
+ AWORD,
+ AXNOR,
+ AXNORCC,
+ AXOR,
+ AXORCC,
+ AEND,
+ ADYNT,
+ AINIT,
+ ASIGNAME,
+ ALAST
+};
+
+/* type/name */
+enum
+{
+ D_GOK = 0,
+ D_NONE,
+
+/* name */
+ D_EXTERN,
+ D_STATIC,
+ D_AUTO,
+ D_PARAM,
+
+/* type */
+ D_BRANCH,
+ D_OREG,
+ D_ASI,
+ D_CONST,
+ D_FCONST,
+ D_SCONST,
+ D_REG,
+ D_FREG,
+ D_CREG,
+ D_PREG,
+ D_FILE,
+ D_FILE1,
+
+/* reg names iff type is D_PREG */
+ D_CPQ = 0,
+ D_CSR,
+ D_FPQ,
+ D_FSR,
+ D_PSR,
+ D_TBR,
+ D_WIM,
+ D_Y
+};
+
+/*
+ * 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 */
+};