#ifndef SDCCRALLOC_H
#define SDCCRALLOC_H 1
+
+
enum
{
R2_IDX = 0, R3_IDX, R4_IDX,
#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 */
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