* src/SDCCast.c (processParams): added new type flow and restructured
[fw/sdcc] / src / pic / main.c
index b3515d09d77c8f1b95b14dd4db5e0eaad261a8b0..5aec2e9c2a7e5dc65c2dae16eb3b10cabe4e575b 100644 (file)
@@ -16,6 +16,7 @@
 static char _defaultRules[] =
 {
 #include "peeph.rul"
+       ""
 };
 
 /* list of key words used by msc51 */
@@ -141,12 +142,32 @@ _process_pragma(const char *sz)
   return 1;
 }
 
+extern char *udata_section_name;
+
 static bool
 _pic14_parseOptions (int *pargc, char **argv, int *i)
 {
+  char buf[128];
+
   /* TODO: allow port-specific command line options to specify
    * segment names here.
    */
+
+       /* This is a temporary hack, to solve problems with some processors
+        * that do not have udata section. It will be changed when a more
+        * robust solution is figured out -- VR 27-11-2003 FIXME
+        */
+       strcpy(buf, "--udata-section-name");
+       if(!strncmp(buf, argv[ *i ], strlen(buf))) {
+               if(strlen(argv[ *i ]) <= strlen(buf)+1) {
+                       fprintf(stderr, "WARNING: no `%s' entered\n", buf+2);
+                       exit(-1);
+               } else {
+                       udata_section_name = strdup( strchr(argv[*i], '=') + 1 );
+               }
+               return 1;
+       }
+   
   return FALSE;
 }
 
@@ -240,8 +261,8 @@ _pic14_genAssemblerPreamble (FILE * of)
   }
 
   fprintf (of, "\tlist\tp=%s\n",&name[1]);
-  fprintf (of, "\tradix dec");
-  fprintf (of, "\ninclude \"%s.inc\"\n",name);
+  fprintf (of, "\tradix dec\n");
+  fprintf (of, "\tinclude \"%s.inc\"\n",name);
 }
 
 /* Generate interrupt vector table. */
@@ -354,12 +375,12 @@ oclsExpense (struct memmap *oclass)
 */
 static const char *_linkCmd[] =
 {
-  "gplink", "", "\"$1.o\"", NULL
+  "gplink", "-o $2", "\"$1.o\"", "$l", NULL
 };
 
 static const char *_asmCmd[] =
 {
-  "gpasm", "-c", "\"$1.asm\"", NULL
+  "gpasm", "$l", "-c", "\"$1.asm\"", NULL
 
 };
 
@@ -391,7 +412,8 @@ PORT pic_port =
     _linkCmd,
     NULL,
     NULL,
-    ".o"
+    ".o",
+    0
   },
   {
     _defaultRules
@@ -452,7 +474,8 @@ PORT pic_port =
   hasExtBitOp,                 /* hasExtBitOp */
   oclsExpense,                 /* oclsExpense */
   FALSE,
-  TRUE,                                /* little endian */
+//  TRUE,                              /* little endian */
+  FALSE,                               /* little endian - PIC code enumlates big endian */
   0,                           /* leave lt */
   0,                           /* leave gt */
   1,                           /* transform <= to ! > */