* Makefile.in, configure.in, configure,
[fw/sdcc] / src / mcs51 / ralloc.h
index cd92de4fc505c4b9c7ee9bc27cffca9e59204ac7..9d851a8fa99ca614f6aafd00e17ad7c6a03f5eb9 100644 (file)
@@ -31,6 +31,8 @@ enum
   {
     R2_IDX = 0, R3_IDX, R4_IDX, R5_IDX,
     R6_IDX, R7_IDX, R0_IDX,  R1_IDX,
+    B0_IDX, B1_IDX, B2_IDX,  B3_IDX,
+    B4_IDX, B5_IDX, B6_IDX,  B7_IDX,
     X8_IDX, X9_IDX, X10_IDX, X11_IDX,
     X12_IDX, CND_IDX,
     DPL_IDX, DPH_IDX, B_IDX, A_IDX,
@@ -45,15 +47,18 @@ enum
 /* definition for the registers */
 typedef struct regs
   {
-    short type;         /* can have value
-                           REG_GPR, REG_PTR or REG_CND */
-    short rIdx;         /* index into register table */
+    short type;             /* can have value
+                               REG_GPR, REG_PTR or REG_CND */
+    short rIdx;             /* index into register table */
     short otype;
-    char *name;         /* name */
-    char *dname;        /* name when direct access needed */
-    char *base;         /* base address */
-    short offset;       /* offset from the base */
-    unsigned isFree:1;  /* is currently unassigned  */
+    char *name;             /* name */
+    char *dname;            /* name when direct access needed */
+    char *base;             /* base address */
+    short offset;           /* offset from the base */
+    unsigned isFree:1;      /* is currently unassigned  */
+    unsigned valueKnown:1;  /* from rtrack.c */
+    unsigned char value;    /* from rtrack.c only valid when valueKnown is set */
+
   }
 regs;
 extern regs regs8051[];
@@ -61,5 +66,9 @@ extern regs regs8051[];
 regs *mcs51_regWithIdx (int);
 
 bitVect *mcs51_rUmaskForOp (operand * op);
+bitVect *mcs51_allBitregs (void);
+
+extern int mcs51_ptrRegReq;
+extern int mcs51_nRegs;
 
 #endif