projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Parameter passing now works
[fw/sdcc]
/
src
/
pic
/
ralloc.h
diff --git
a/src/pic/ralloc.h
b/src/pic/ralloc.h
index 1ce9ee8ad65d08e077f1bc18159cc42e4bd3c5da..c0801c2865d26784bfef82d7a15f4b6465169764 100644
(file)
--- a/
src/pic/ralloc.h
+++ b/
src/pic/ralloc.h
@@
-28,6
+28,8
@@
#ifndef SDCCRALLOC_H
#define SDCCRALLOC_H 1
#ifndef SDCCRALLOC_H
#define SDCCRALLOC_H 1
+
+
enum
{
R2_IDX = 0, R3_IDX, R4_IDX,
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_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
/* 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 */
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;
regs;
extern regs regspic14[];
extern int pic14_nRegs;
+extern int Gstack_base_addr;
regs *pic14_regWithIdx (int);
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
#endif