split PIC port gen.c pcodepeep.c into smaller files. Added structure support.
[fw/sdcc] / src / pic / ralloc.h
index d9e25fea2e74f5aad708b2811e8024cf3ae150b0..37e37dbc6b09a1c722e9efc80c0de76f3d7367ab 100644 (file)
 #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, X8_IDX,
+    X9_IDX, X10_IDX, X11_IDX,
+    X12_IDX, CND_IDX
+  };
 
 
 #define REG_PTR 0x01
 #define REG_GPR 0x02
 #define REG_CND 0x04
+#define REG_SFR 0x08
+
 /* 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  */
-  unsigned wasUsed :1;   /* becomes true if register has been used */
-} regs;
+  {
+    short type;                        /* can have value 
+                                * REG_GPR, REG_PTR or REG_CND 
+                                * This like the "meta-type" */
+    short pc_type;              /* pcode type */
+    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 wasUsed:1;                /* becomes true if register has been used */
+  }
+regs;
 extern regs regspic14[];
 extern int pic14_nRegs;
 
-regs  *pic14_regWithIdx (int);
-
+regs *pic14_regWithIdx (int);
+void  pic14_freeAllRegs ();
+void  pic14_deallocateAllRegs ();
+regs *pic14_findFreeReg(void);
 
-enum PIC_register_types {
-  PIC_INDF,
-  PIC_TMR0,
-  PIC_FSR,
-  PIC_STATUS,
-  PIC_IOPORT,
-  PIC_IOTRIS,
-  PIC_GPR,         /*  A general purpose file register */
-  PIC_SFR          /*  A special function register */
-};
+enum PIC_register_types
+  {
+    PIC_INDF,
+    PIC_TMR0,
+    PIC_FSR,
+    PIC_STATUS,
+    PIC_IOPORT,
+    PIC_IOTRIS,
+    PIC_GPR,                   /*  A general purpose file register */
+    PIC_SFR                    /*  A special function register */
+  };
 
 
 #endif