* fixed GCC 4.4.0 mingw compilation:
[fw/sdcc] / src / mcs51 / ralloc.h
index 0488a61c7b5a814faab11865ba9b260824fb1e1a..9d851a8fa99ca614f6aafd00e17ad7c6a03f5eb9 100644 (file)
@@ -8,53 +8,67 @@
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
    later version.
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
    later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-   
+
    In other words, you are welcome to use, share and improve this program.
    You are forbidden to forbid anyone else to use, share and improve
    In other words, you are welcome to use, share and improve this program.
    You are forbidden to forbid anyone else to use, share and improve
-   what you give them.   Help stamp out software-hoarding!  
+   what you give them.   Help stamp out software-hoarding!
 -------------------------------------------------------------------------*/
 #include "SDCCicode.h"
 #include "SDCCBBlock.h"
 #ifndef SDCCRALLOC_H
 #define SDCCRALLOC_H 1
 
 -------------------------------------------------------------------------*/
 #include "SDCCicode.h"
 #include "SDCCBBlock.h"
 #ifndef SDCCRALLOC_H
 #define SDCCRALLOC_H 1
 
-enum { R2_IDX = 0, R3_IDX , R4_IDX  ,
-       R5_IDX   ,R6_IDX   , R7_IDX  ,
-       R0_IDX   ,R1_IDX   , X8_IDX  ,
-       X9_IDX   ,X10_IDX  , X11_IDX ,
-       X12_IDX  ,CND_IDX };
+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,
+    END_IDX
+  };
 
 
 #define REG_PTR 0x01
 #define REG_GPR 0x02
 #define REG_CND 0x04
 
 
 #define REG_PTR 0x01
 #define REG_GPR 0x02
 #define REG_CND 0x04
+#define REG_BIT 0x08
 /* definition for the registers */
 typedef struct regs
 /* 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 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  */    
-} regs;
+  {
+    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  */
+    unsigned valueKnown:1;  /* from rtrack.c */
+    unsigned char value;    /* from rtrack.c only valid when valueKnown is set */
+
+  }
+regs;
 extern regs regs8051[];
 
 extern regs regs8051[];
 
-regs  *mcs51_regWithIdx (int);
+regs *mcs51_regWithIdx (int);
+
+bitVect *mcs51_rUmaskForOp (operand * op);
+bitVect *mcs51_allBitregs (void);
 
 
-/* in gen.c */
-extern unsigned fReturnSize;
+extern int mcs51_ptrRegReq;
+extern int mcs51_nRegs;
 
 #endif
 
 #endif