#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
/* 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 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 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_TLCS900H
-extern PORT tlcs900h_port;
+#if !OPT_DISABLE_DS400
+extern PORT ds400_port;
#endif
#endif /* PORT_INCLUDE*/