TYPEOF_EEPPOINTER
};
+// values for first byte of generic pointer.
+#define GPTYPE_NEAR 0
+#define GPTYPE_FAR 1
+#define GPTYPE_CODE 2
+#define GPTYPE_XSTACK 3
+#define GPTYPE_GPTR 4 // Never used?
+#define GPTYPE_IDATA 5
+
#define HASHTAB_SIZE 256
/* hash table bucket */
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 */
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 */
#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 )
#define IS_ARITHMETIC(x) (IS_INTEGRAL(x) || IS_FLOAT(x))
#define IS_AGGREGATE(x) (IS_ARRAY(x) || IS_STRUCT(x))
#define IS_LITERAL(x) (IS_SPEC(x) && x->select.s.sclass == S_LITERAL)
+#define IS_CODE(x) (IS_SPEC(x) && SPEC_SCLS(x) == S_CODE)
#define IS_REGPARM(x) (IS_SPEC(x) && SPEC_REGPARM(x))
/* forward declaration for the global vars */