* src/pic16/device.c: reverted to previous version
[fw/sdcc] / src / pic16 / device.h
index 8c387a82bda910c34348119f30660da5abba1d00..64dffb10a627e94c2803d1dd6ac6e1c2495f04fd 100644 (file)
 #ifndef  __DEVICE_H__
 #define  __DEVICE_H__
 
-#if defined(__BORLANDC__) || defined(_MSC_VER)
-#define STRCASECMP stricmp
-#else
-#define STRCASECMP strcasecmp
-#endif
-
 #define CONFIGURATION_WORDS    20
 #define IDLOCATION_BYTES       20
 
@@ -46,9 +40,9 @@ typedef struct {
        
 
 typedef struct {
-       int mask;
+       unsigned int mask;
        int emit;
-       int value;
+       unsigned int value;
 } configRegInfo_t;
 
 typedef struct {
@@ -85,34 +79,59 @@ typedef struct PIC16_device {
 
 /* Given a pointer to a register, this macro returns the bank that it is in */
 #define REG_ADDR(r)        ((r)->isBitField ? (((r)->address)>>3) : (r)->address)
-//#define REG_BANK(r)        (pic16_finalMapping[REG_ADDR(r)].bank)
-//#define REG_isALIASED(r)   (pic16_finalMapping[REG_ADDR(r)].alias != 0)
-//#define REG_isVALID(r)     (pic16_finalMapping[REG_ADDR(r)].isValid)
 
+#define OF_LR_SUPPORT          0x00000001
+#define OF_OPTIMIZE_GOTO       0x00000002
+#define OF_OPTIMIZE_CMP                0x00000004
+#define OF_OPTIMIZE_DF         0x00000008
 
 typedef struct {
-       int no_banksel;
-       int opt_banksel;
-       int omit_configw;
-       int omit_ivt;
-       int leave_reset;
-       int stack_model;
-       int ivt_loc;
-       int nodefaultlibs;
-       int dumpcalltree;
+  int no_banksel;
+  int opt_banksel;
+  int omit_configw;
+  int omit_ivt;
+  int leave_reset;
+  int stack_model;
+  int ivt_loc;
+  int nodefaultlibs;
+  int dumpcalltree;
+  char *crt_name;
+  int no_crt;
+  int ip_stack;
+  unsigned long opt_flags;
+  int gstack;
+  unsigned int debgen;
 } pic16_options_t;
 
+extern int xinst;
+
 #define STACK_MODEL_SMALL      (pic16_options.stack_model == 0)
 #define STACK_MODEL_LARGE      (pic16_options.stack_model == 1)
 
 extern set *fix_idataSymSet;
 extern set *rel_idataSymSet;
 
+#if 0
+/* This is an experimental code for #pragma inline
+   and is temporarily disabled for 2.5.0 release */
+extern set *asmInlineMap;
+#endif  /* 0 */
+
+typedef struct {
+  unsigned long isize;
+  unsigned long adsize;
+  unsigned long udsize;
+  unsigned long idsize;
+  unsigned long intsize;
+} stats_t;
+
+extern stats_t statistics;
+
 extern pic16_options_t pic16_options;
 extern PIC16_device *pic16;
 
 /****************************************/
-void pic16_assignConfigWordValue(int address, int value);
+void pic16_assignConfigWordValue(int address, unsigned int value);
 void pic16_assignIdByteValue(int address, char value);
 int pic16_isREGinBank(regs *reg, int bank);
 int pic16_REGallBanks(regs *reg);
@@ -123,5 +142,6 @@ int PIC16_IS_HWREG_ADDRESS(int address);
 
 int checkAddReg(set **set, regs *reg);
 int checkAddSym(set **set, symbol *reg);
+int checkSym(set *set, symbol *reg);
 
 #endif  /* __DEVICE_H__ */