X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fpic%2Fralloc.h;h=4c85fceea5c9c27c240b81811762cae3e265b29c;hb=661651374d7b67aca713b215c01b13b2782c4b37;hp=08ddfa2e462299a886ccdbf40e95a734e14c172b;hpb=f58b068ff2c3cfa28e025cdbd4833b5ac650da44;p=fw%2Fsdcc diff --git a/src/pic/ralloc.h b/src/pic/ralloc.h index 08ddfa2e..4c85fcee 100644 --- a/src/pic/ralloc.h +++ b/src/pic/ralloc.h @@ -3,7 +3,7 @@ SDCCralloc.h - header file register allocation Written By - Sandeep Dutta . sandeep.dutta@usa.net (1998) - PIC port - T. Scott Dattalo scott@dattalo.com (2000) + PIC port - T. Scott Dattalo scott@dattalo.com (2000) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -31,56 +31,40 @@ #include "pcoderegs.h" -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 { - REG_PTR=1, - REG_GPR, - REG_CND, - REG_SFR, - REG_STK, - REG_TMP + REG_PTR=1, + REG_GPR, + REG_CND, + REG_SFR, + REG_STK, + REG_TMP }; -//#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 */ -//#define REG_TMP 0x20 /* definition for the registers */ typedef struct 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 */ - - unsigned isFree:1; /* is currently unassigned */ - unsigned wasUsed:1; /* becomes true if register has been used */ - unsigned isFixed:1; /* True if address can't change */ - unsigned isMapped:1; /* The Register's address has been mapped to physical RAM */ - unsigned isBitField:1; /* True if reg is type bit OR is holder for several bits */ - unsigned isEmitted:1; /* True if the reg has been written to a .asm file */ - unsigned isPublic:1; /* True if the reg is not static and can be modified in another module (ie a another c or asm file) */ - unsigned isExtern:1; /* True if the reg is in another module */ - unsigned address; /* reg's address if isFixed | isMapped is true */ - unsigned size; /* 0 for byte, 1 for int, 4 for long */ - unsigned alias; /* Alias mask if register appears in multiple banks */ - struct regs *reg_alias; /* If more than one register share the same address - * then they'll point to each other. (primarily for bits)*/ - pCodeRegLives reglives; /* live range mapping */ - } +{ + 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 */ + char *name; /* name */ + + unsigned isFree:1; /* is currently unassigned */ + unsigned wasUsed:1; /* becomes true if register has been used */ + unsigned isFixed:1; /* True if address can't change */ + unsigned isMapped:1; /* The Register's address has been mapped to physical RAM */ + unsigned isBitField:1; /* True if reg is type bit OR is holder for several bits */ + unsigned isEmitted:1; /* True if the reg has been written to a .asm file */ + unsigned isPublic:1; /* True if the reg is not static and can be modified in another module (ie a another c or asm file) */ + unsigned isExtern:1; /* True if the reg is in another module */ + unsigned address; /* reg's address if isFixed | isMapped is true */ + unsigned size; /* 0 for byte, 1 for int, 4 for long */ + unsigned alias; /* Alias mask if register appears in multiple banks */ + struct regs *reg_alias; /* If more than one register share the same address + * then they'll point to each other. (primarily for bits)*/ + pCodeRegLives reglives; /* live range mapping */ +} regs; extern regs regspic14[]; extern int pic14_nRegs;