#define PORT_INCLUDE
#include "SDCCicode.h"
+#include "SDCCargs.h"
#define TARGET_ID_MCS51 1
#define TARGET_ID_GBZ80 2
#define TARGET_ID_AVR 4
#define TARGET_ID_DS390 5
#define TARGET_ID_PIC 6
-#define TARGET_ID_I186 7
-#define TARGET_ID_TLCS900H 8
+#define TARGET_ID_PIC16 7
#define TARGET_ID_XA51 9
+#define TARGET_ID_DS400 10
+#define TARGET_ID_HC08 11
/* Macro to test the target we are compiling for.
Can only be used after SDCCmain has defined the port
#define TARGET_IS_Z80 (port->id==TARGET_ID_Z80)
#define TARGET_IS_AVR (port->id==TARGET_ID_AVR)
#define TARGET_IS_DS390 (port->id==TARGET_ID_DS390)
+#define TARGET_IS_DS400 (port->id==TARGET_ID_DS400)
#define TARGET_IS_PIC (port->id==TARGET_ID_PIC)
-#define TARGET_IS_I186 (port->id==TARGET_ID_I186)
-#define TARGET_IS_TCLS900H (port->id==TARGET_ID_TCLS900H)
+#define TARGET_IS_PIC16 (port->id==TARGET_ID_PIC16)
+#define TARGET_IS_XA51 (port->id==TARGET_ID_XA51)
+#define TARGET_IS_HC08 (port->id==TARGET_ID_HC08)
#define MAX_BUILTIN_ARGS 16
/* definition of builtin functions */
/** Target name string, used for --help */
const char *target_name;
+/** Specific processor for the given target family. specified by -p */
+ char *processor;
+
struct
{
+ /** Pointer to glue function */
+ void (*do_glue)(void);
/** TRUE if all types of glue functions should be inserted into
the file that also defines main.
We dont want this in cases like the z80 where the startup
int externGlobal;
/* assembler file extension */
const char *file_ext;
+ /** If non-null will be used to execute the assembler. */
+ void (*do_assemble) (set *);
}
assembler;
const char *mcmd;
/** If non-null will be used to execute the link. */
void (*do_link) (void);
- /** Extention for object files (.rel, .obj, ...) */
+ /** Extension for object files (.rel, .obj, ...) */
const char *rel_ext;
}
linker;
}
mem;
+ struct
+ {
+ void (*genExtraAreaDeclaration)(FILE *, bool);
+ void (*genExtraAreaLinkOptions)(FILE *);
+ }
+ extraAreas;
+
/* stack related information */
struct
{
void (*init) (void);
/** Parses one option + its arguments */
bool (*parseOption) (int *pargc, char **argv, int *i);
+/** Optional list of automatically parsed options. Should be
+ implemented to at least show the help text correctly. */
+ OPTION *poptions;
/** Called after all the options have been parsed. */
void (*finaliseOptions) (void);
/** Called after the port has been selected but before any
/* Write any port specific assembler output. */
void (*genAssemblerPreamble) (FILE * of);
+ /* invoked at end assembler file */
+ void (*genAssemblerEnd) (FILE * of);
/* Write the port specific IVT. If genIVT is NULL or if
* it returns zero, default (8051) IVT generation code
*/
bool (*hasNativeMulFor) (iCode *ic, sym_link *left, sym_link *right);
+ /** Returns true if the port has implemented certain bit
+ manipulation iCodes (RRC, RLC, SWAP, GETHBIT)
+ */
+ bool (*hasExtBitOp) (int op, int size);
+
+ /** Returns the relative expense of accessing a particular output
+ storage class. Larger values indicate higher expense.
+ */
+ int (*oclsExpense) (struct memmap *oclass);
+
/** If TRUE, then tprintf and !dw will be used for some initalisers
*/
bool use_dw_for_init;
+ /** TRUE for targets with little endian byte ordering, FALSE for
+ targets with big endian byte ordering.
+ */
+ bool little_endian;
+
/* condition transformations */
bool lt_nge; /* transform (a < b) to !(a >= b) */
bool gt_nle; /* transform (a > b) to !(a <= b) */
bool eq_nne; /* transform a == b --> ! (a != b) */
bool arrayInitializerSuppported;
-
bool (*cseOk) (iCode *ic, iCode *pdic);
- builtins *builtintable; /* table of builtin functions */
+ builtins *builtintable; /* table of builtin functions */
+ int unqualified_pointer; /* unqualified pointers type is */
+ int reset_labelKey ; /* reset Label no 1 at the start of a function */
+ int globals_allowed ; /* global & static locals not allowed ? 0 ONLY TININative*/
#define PORT_MAGIC 0xAC32
/** Used at runtime to detect if this structure has been completly filled in. */
int magic;
#if !OPT_DISABLE_PIC
extern PORT pic_port;
#endif
-#if !OPT_DISABLE_I186
-extern PORT i186_port;
+#if !OPT_DISABLE_PIC16
+extern PORT pic16_port;
+#endif
+#if !OPT_DISABLE_TININative
+extern PORT tininative_port;
+#endif
+#if !OPT_DISABLE_XA51
+extern PORT xa51_port;
+#endif
+#if !OPT_DISABLE_DS400
+extern PORT ds400_port;
#endif
-#if !OPT_DISABLE_TLCS900H
-extern PORT tlcs900h_port;
+#if !OPT_DISABLE_HC08
+extern PORT hc08_port;
#endif
#endif /* PORT_INCLUDE*/