Added z80 port (links, may not work). mcs51 still works.
[fw/sdcc] / src / SDCCglobl.h
index 62068c3ec3925eb1f7fb5724a00a0e2fe3609e42..c4e9c977f914947ce581f1498a1e76c3c1c5b9fa 100644 (file)
@@ -5,6 +5,7 @@
 #include <assert.h>
 #include <stdlib.h>
 #include <setjmp.h>
+#include <stdio.h>
 #include "sdccconf.h"
 #include "SDCCerr.h"
 
@@ -203,6 +204,60 @@ struct options {
     int iram_size      ; /* internal ram size (used only for error checking) */
 } ;
 
+/* Processor specific names */
+typedef struct {
+    /** Target name string, used for --help */
+    const char *target_name;
+    struct {
+       /** Command to run (eg as-z80) */
+       const char *exec_name;
+       /** Arguments for debug mode */
+       const char *debug_opts;
+       /** Arguments for normal assembly mode */
+       const char *plain_opts;
+       /** TRUE if the output file name should be pre-pended to the args */
+       bool requires_output_name;
+    } assembler;
+    struct {
+       /** Command to run (eg link-z80) */
+       const char *exec_name;
+    } linker;
+    /** Basic type sizes */
+    struct {
+       int char_size;
+       int short_size;
+       int int_size;
+       int long_size;
+       int ptr_size;
+       int fptr_size;
+       int gptr_size;
+       int bit_size;
+       int float_size;
+       int max_base_size;
+    } s;
+    struct {
+       /** -1 for grows down (z80), +1 for grows up (mcs51) */
+       int direction;
+       /** Extra overhead when calling between banks */
+       int bank_overhead;
+       /** Extra overhead when the function is an ISR */
+       int isr_overhead;
+       /** Standard overhead for a function call */
+       int call_overhead;
+       /** Initial SP offset */
+       int start_sp;
+    } stack;
+    struct {
+       /** One more than the smallest mul/div operation the processor can do nativley 
+           Eg if the processor has an 8 bit mul, nativebelow is 2 */
+       int nativebelow;
+       
+    } muldiv;
+
+} PROCESSOR_CONSTANTS;
+
+extern const PROCESSOR_CONSTANTS port;
+
 /* forward definition for variables accessed globally */
 extern char *currFname ;
 extern char *srcFileName; /* source file name without the extenstion */