Added
[fw/sdcc] / src / SDCCsymt.h
index 8660ad3a894e84f735ffb44c0bc40d949dbc5ed4..da96ada5c5d6ed6b1ed15fb56a846e6f920c3847 100644 (file)
@@ -132,7 +132,7 @@ typedef struct specifier
     unsigned _stack;           /* stack offset for stacked v */
     unsigned _bitStart;                /* bit start position         */
     int _bitLength;            /* bit length                 */
-
+    int argreg;                /* reg no for regparm         */
     union
       {                                /* Values if constant or enum */
        short int v_int;                /* int and char values        */
@@ -207,6 +207,9 @@ typedef struct sym_link
       unsigned intno;          /* 1=Interrupt svc routine    */
       unsigned regbank;                /* register bank 2b used      */
       unsigned builtin;                /* is a builtin function      */
+      unsigned javaNative;     /* is a JavaNative Function (TININative ONLY) */
+      unsigned overlay;        /* force parameters & locals into overlay segment */
+      unsigned hasStackParms;   /* function has parameters on stack */
     } funcAttrs;
 
     struct sym_link *next;     /* next element on the chain  */
@@ -261,7 +264,9 @@ typedef struct symbol
                                   ACCUSE_A and ACCUSE_HL as the idea
                                   is quite similar.
                                 */
-
+    unsigned dptr;             /* 8051 variants with multiple DPTRS
+                                  currently implemented in DS390 only
+                               */
     int allocreq ;             /* allocation is required for this variable */
     int stack;                 /* offset on stack      */
     int xstack;                        /* offset on xternal stack */
@@ -323,6 +328,7 @@ symbol;
 #define IFFUNC_RBANK(x) (IS_FUNC(x) && FUNC_RBANK(x))
 #define FUNC_INTNO(x) (x->funcAttrs.intno)
 #define FUNC_REGBANK(x) (x->funcAttrs.regbank)
+#define FUNC_HASSTACKPARM(x) (x->funcAttrs.hasStackParms)
 
 #define FUNC_ISREENT(x) (x->funcAttrs.reent)
 #define IFFUNC_ISREENT(x) (IS_FUNC(x) && FUNC_ISREENT(x))
@@ -336,6 +342,11 @@ symbol;
 #define IFFUNC_ISCRITICAL(x) (IS_FUNC(x) && FUNC_ISCRITICAL(x))
 #define FUNC_ISBUILTIN(x) (x->funcAttrs.builtin)
 #define IFFUNC_ISBUILTIN(x) (IS_FUNC(x) && FUNC_ISBUILTIN(x))
+#define FUNC_ISJAVANATIVE(x) (x->funcAttrs.javaNative)
+#define IFFUNC_ISJAVANATIVE(x) (IS_FUNC(x) && FUNC_ISJAVANATIVE(x))
+#define FUNC_ISOVERLAY(x) (x->funcAttrs.overlay)
+#define IFFUNC_ISOVERLAY(x) (IS_FUNC(x) && FUNC_ISOVERLAY(x))
+
 
 // jwk: I am not sure about this
 #define IFFUNC_ISBANKEDCALL(x) (!IFFUNC_NONBANKED(x) && \
@@ -371,6 +382,7 @@ symbol;
 #define SPEC_STRUCT(x) x->select.s.v_struct
 #define SPEC_TYPEDEF(x) x->select.s._typedef
 #define SPEC_REGPARM(x) x->select.s._isregparm
+#define SPEC_ARGREG(x) x->select.s.argreg
 
 /* type check macros */
 #define IS_DECL(x)   ( x && x->class == DECLARATOR     )