- Parameter passing now works
[fw/sdcc] / src / pic / ralloc.h
index 1ce9ee8ad65d08e077f1bc18159cc42e4bd3c5da..c0801c2865d26784bfef82d7a15f4b6465169764 100644 (file)
@@ -28,6 +28,8 @@
 #ifndef SDCCRALLOC_H
 #define SDCCRALLOC_H 1
 
+
+
 enum
   {
     R2_IDX = 0, R3_IDX, R4_IDX,
@@ -41,11 +43,16 @@ enum
 #define REG_PTR 0x01
 #define REG_GPR 0x02
 #define REG_CND 0x04
+#define REG_SFR 0x08
+#define REG_STK 0x10  /* Use a register as a psuedo stack */
+
 /* definition for the registers */
 typedef struct regs
   {
     short type;                        /* can have value 
-                                  REG_GPR, REG_PTR or REG_CND */
+                                * 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 */
@@ -58,21 +65,11 @@ typedef struct regs
 regs;
 extern regs regspic14[];
 extern int pic14_nRegs;
+extern int Gstack_base_addr;
 
 regs *pic14_regWithIdx (int);
-
-
-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 */
-  };
-
+void  pic14_freeAllRegs ();
+void  pic14_deallocateAllRegs ();
+regs *pic14_findFreeReg(short type);
 
 #endif