]> git.gag.com Git - fw/sdcc/commitdiff
virtualization of glue() function: each port has it's own glue function,
authorborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 2 Jul 2003 20:56:07 +0000 (20:56 +0000)
committerborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 2 Jul 2003 20:56:07 +0000 (20:56 +0000)
which is accessed by do_glue function pointer in PORT.general structure

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2719 4a8a32a2-be11-0410-ad9d-d568d2c75423

14 files changed:
ChangeLog
src/SDCCmain.c
src/avr/main.c
src/ds390/main.c
src/izt/i186.c
src/izt/tlcs900h.c
src/mcs51/main.c
src/pic/glue.h
src/pic/main.c
src/pic16/glue.h
src/pic16/main.c
src/port.h
src/xa51/main.c
src/z80/main.c

index 0976fe1383e52f3c6cb5fdb5de6dc8b75cf94090..56c7b9171c78de2182c254c71b897a2c795b71b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-07-02  Borut Razem <borut.razem@siol.net>
+
+       * src/port.h, src/SDCCmain.c, src/pic/glue.h, src/pic/main.c,
+       src/pic16/glue.h, sdcc/src/pic16/main.c, src/izt/i186.c,
+       src/izt/tlcs900h.c, src/avr/main.c, src/ds390/main.c, src/mcs51/main.c,
+       src/xa51/main.c, src/z80/main.c:
+       virtualization of glue() function: each port has it's own glue function,
+       which is accessed by do_glue function pointer in PORT.general structure
+
 2003-07-01 Kevin Vigor <kevin@vigor.nu>
 
         * DS800C400 fun, improved ROM interface and tinibios.
index bda73ad70187bff57ee89ea517fdc64ac9792a1a..66340ca85bd5ca70353fea69eda181baf260f0fc 100644 (file)
@@ -306,13 +306,6 @@ static PORT *_ports[] =
 
 #define NUM_PORTS (sizeof(_ports)/sizeof(_ports[0]))
 
-#if !OPT_DISABLE_PIC
-extern void picglue ();
-#endif
-#if !OPT_DISABLE_PIC16
-extern void pic16glue();
-#endif
-
 /** Sets the port to the one given by the command line option.
     @param    The name minus the option (eg 'mcs51')
     @return     0 on success.
@@ -407,7 +400,7 @@ _findProcessor (int argc, char **argv)
 /* printVersionInfo - prints the version info        */
 /*-----------------------------------------------------------------*/
 void
-printVersionInfo ()
+printVersionInfo (void)
 {
   int i;
 
@@ -460,7 +453,7 @@ printOptions(const OPTION *optionsTable)
 /* printUsage - prints command line syntax         */
 /*-----------------------------------------------------------------*/
 void
-printUsage ()
+printUsage (void)
 {
     int i;
     printVersionInfo();
@@ -1998,29 +1991,15 @@ main (int argc, char **argv, char **envp)
         exit (1);
       }
 
-      if (TARGET_IS_PIC) {
-        /* TSD PIC port hack - if the PIC port option is enabled
-           and SDCC is used to generate PIC code, then we will
-           generate .asm files in gpasm's format instead of SDCC's
-           assembler's format
-        */
-#if !OPT_DISABLE_PIC
-        picglue ();
-#endif
-
-      } else
-      if(TARGET_IS_PIC16) {
-       /* PIC16 port misc improvements Vangelis Rokas - 6-May-2003
-         Generate .asm files for gpasm (just like PIC target) but use
-         pic16glue()
-       */
-      
-#if !OPT_DISABLE_PIC16
-       pic16glue();
-#endif
-      } else {
-        glue ();
-      }
+      if (port->general.do_glue != NULL)
+        (*port->general.do_glue)();
+      else
+        {
+          /* this shouldn't happen */
+          assert(FALSE);
+          /* in case of NDEBUG */
+          glue();
+        }
 
       if (!options.c1mode && !noAssemble)
         {
index 73eb0ba6b652aca3a3d71016bb6b62affcff3b48..5d5a323716eadfc806049c7a1cfb554e0dcfbc6b 100644 (file)
@@ -153,6 +153,7 @@ PORT avr_port = {
        "ATMEL AVR",            /* Target name */
        NULL,                   /* processor */
        {
+         glue,
         TRUE,                  /* Emit glue around main */
         MODEL_LARGE | MODEL_SMALL,
         MODEL_SMALL},
index 285862e36830cc60ed71706f78da2e41ad98b220..4323260488b297d7f1347a86bb43d87f2b62fb0b 100644 (file)
@@ -339,6 +339,7 @@ PORT ds390_port =
   "DS80C390",                  /* Target name */
   NULL,
   {
+    glue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
     MODEL_SMALL
@@ -836,6 +837,7 @@ PORT ds400_port =
   "DS80C400",                  /* Target name */
   NULL,
   {
+    glue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
     MODEL_SMALL
index 60048a43888f726333c6b12edadca16e656d51a4..dbb92322cc21f5c6a3616a08b7dc7b7544206f8c 100644 (file)
@@ -138,6 +138,7 @@ PORT i186_port = {
     "Intel 80186",      /* Target name */
     NULL,
     {
+        glue,
         FALSE,          /* Emit glue around main */
         MODEL_SMALL,
         MODEL_SMALL
index 2f5a9d226002f22a42821a4070ce32e14f32a2f2..732f93a1313bb8af39b6336def3f53a4029988a7 100644 (file)
@@ -137,6 +137,7 @@ PORT tlcs900h_port =
   "Toshiba TLCS-900H",         /* Target name */
   NULL,
   {
+    glue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL,
     MODEL_SMALL
index 3857a4e52e899af576c4831293a07d10609516e9..e7af479f8541dc41d4a29f9449d5ec062c21215d 100644 (file)
@@ -232,6 +232,7 @@ PORT mcs51_port =
   "MCU 8051",                  /* Target name */
   NULL,                                /* Processor name */
   {
+    glue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL | MODEL_LARGE,
     MODEL_SMALL
index 30e54dde9d3cf8df4bcc187282b68511a1b53257..bd1cea98ef216b02ff2f6719033c2dc6414e32f5 100644 (file)
    You are forbidden to forbid anyone else to use, share and improve
    what you give them.   Help stamp out software-hoarding!  
 -------------------------------------------------------------------------*/
-#include "SDCCglobl.h"
-#include "SDCCmem.h"
 
-#ifndef SDCCGLUE_H
-#define SDCCGLUE_H 1
+#ifndef PIC_GLUE_H
+#define PIC_GLUE_H
 
-void glue ();
-/* drdani Jan 30 2000
-   This is needed in gen.c of z80 port */
-char *aopLiteral (value *, int);
+void picglue (void);
 
 #endif
index ff5bcd3d658d17955b313b49c9f3e64706760159..66b235187a86df0625dcaaaa0a60beccd0b9952c 100644 (file)
@@ -9,6 +9,7 @@
 #include "ralloc.h"
 #include "device.h"
 #include "SDCCutil.h"
+#include "glue.h"
 //#include "gen.h"
 
 
@@ -344,6 +345,7 @@ PORT pic_port =
   "MCU pic",                   /* Target name */
   "",                    /* Processor */
   {
+    picglue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
     MODEL_SMALL
index 30e54dde9d3cf8df4bcc187282b68511a1b53257..7df7587c71d25037cb416efaa4c57718a38b958b 100644 (file)
    You are forbidden to forbid anyone else to use, share and improve
    what you give them.   Help stamp out software-hoarding!  
 -------------------------------------------------------------------------*/
-#include "SDCCglobl.h"
-#include "SDCCmem.h"
 
-#ifndef SDCCGLUE_H
-#define SDCCGLUE_H 1
+#ifndef PIC16_GLUE_H
+#define PIC16_GLUE_H
 
-void glue ();
-/* drdani Jan 30 2000
-   This is needed in gen.c of z80 port */
-char *aopLiteral (value *, int);
+void pic16glue (void);
 
 #endif
index d236fe6df74e292a2d2c8b4ee71e8ed4b3768349..abd6c3a5d4aa120afa4f24161be6786827adeb15 100644 (file)
@@ -9,6 +9,7 @@
 #include "ralloc.h"
 #include "device.h"
 #include "SDCCutil.h"
+#include "glue.h"
 //#include "gen.h"
 
 
@@ -361,6 +362,7 @@ PORT pic16_port =
   "MCU PIC16",                 /* Target name */
   "p18f452",                    /* Processor */
   {
+    pic16glue,
     TRUE,                      /* Emit glue around main */
     MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
     MODEL_SMALL
index 835b55fb5a73ab18631ff7a174b6a10a1a395a43..5bb49e82de4a793bd769774eae319448cf152312 100644 (file)
@@ -57,6 +57,8 @@ typedef struct
 
     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
index 53b54359adb1199e4ff6a724ef4424d4770f34f1..707bad099c831ccd8a42ada8e5e0e32a3b09a47d 100755 (executable)
@@ -213,6 +213,7 @@ PORT xa51_port =
   "MCU 80C51XA",                       /* Target name */
   NULL,                                /* Processor name */
   {
+    glue,
     FALSE,                     /* Emit glue around main */
     MODEL_PAGE0,
     MODEL_PAGE0
index 2ff5b561c18e6f56090a3bdee189bb213aae4202..4711840b6bb1e2ec35c2c54c801ddab21e5b83d3 100644 (file)
@@ -498,6 +498,7 @@ PORT z80_port =
   "Zilog Z80",                 /* Target name */
   NULL,                                /* Processor name */
   {
+    glue,
     FALSE,
     MODEL_MEDIUM | MODEL_SMALL,
     MODEL_SMALL
@@ -592,6 +593,7 @@ PORT gbz80_port =
   "Gameboy Z80-like",          /* Target name */
   NULL,
   {
+    glue,
     FALSE,
     MODEL_MEDIUM | MODEL_SMALL,
     MODEL_SMALL