* support/regression/tests/bug-477927.c: Added.
[fw/sdcc] / src / pic / main.c
index e55b77aceb66556a75c05764e1119508a5a3da89..60443f663b68ba38df0717a8ed483629e1ed982c 100644 (file)
@@ -7,7 +7,8 @@
 #include "common.h"
 #include "main.h"
 #include "ralloc.h"
-#include "gen.h"
+//#include "gen.h"
+
 
 static char _defaultRules[] =
 {
@@ -42,6 +43,7 @@ static char *_pic14_keywords[] =
   NULL
 };
 
+void  pCodeInitRegisters(void);
 
 void pic14_assignRegisters (eBBlock ** ebbs, int count);
 
@@ -51,6 +53,7 @@ static void
 _pic14_init (void)
 {
   asm_addTree (&asm_asxxxx_mapping);
+  pCodeInitRegisters();
 }
 
 static void
@@ -83,6 +86,10 @@ _pic14_parseOptions (int *pargc, char **argv, int *i)
 static void
 _pic14_finaliseOptions (void)
 {
+
+      port->mem.default_local_map = data;
+      port->mem.default_globl_map = data;
+#if 0
   /* Hack-o-matic: if we are using the flat24 model,
    * adjust pointer sizes.
    */
@@ -136,6 +143,7 @@ _pic14_finaliseOptions (void)
          istack->ptrType = FPOINTER;
        }
     }
+#endif
 }
 
 static void
@@ -154,9 +162,9 @@ _pic14_getRegName (struct regs *reg)
 static void
 _pic14_genAssemblerPreamble (FILE * of)
 {
-  fprintf (of, "\tlist\tp=16c84\n");
+  fprintf (of, "\tlist\tp=16f877\n");
   fprintf (of, "\t__config _wdt_off\n");
-  fprintf (of, "\ninclude \"p16c84.inc\"\n");
+  fprintf (of, "\ninclude \"p16f877.inc\"\n");
 }
 
 /* Generate interrupt vector table. */
@@ -207,8 +215,9 @@ static const char *_asmCmd[] =
 };
 
 /* Globals */
-PORT pic14_port =
+PORT pic_port =
 {
+  TARGET_ID_PIC,
   "pic14",
   "MCU pic",                   /* Target name */
   {
@@ -219,14 +228,17 @@ PORT pic14_port =
   {
     _asmCmd,
     NULL,
+    NULL,
     NULL,
        //"-plosgffc",          /* Options with debug */
        //"-plosgff",           /* Options without debug */
-    0
+    0,
+    ".asm"
   },
   {
     _linkCmd,
     NULL,
+    NULL,
     ".rel"
   },
   {
@@ -234,7 +246,7 @@ PORT pic14_port =
   },
   {
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
-    1, 1, 2, 4, 1, 2, 1, 1, 4, 4
+    1, 2, 2, 4, 1, 2, 1, 1, 4, 4
        /* TSD - I changed the size of gptr from 3 to 1. However, it should be
           2 so that we can accomodate the PIC's with 4 register banks (like the
           16f877)
@@ -262,7 +274,7 @@ PORT pic14_port =
   },
     /* pic14 has an 8 bit mul */
   {
-    1, 0
+    1, -1
   },
   "_",
   _pic14_init,
@@ -277,6 +289,8 @@ PORT pic14_port =
   _pic14_reset_regparm,
   _pic14_regparm,
   NULL,
+  NULL,
+  NULL,
   FALSE,
   0,                           /* leave lt */
   0,                           /* leave gt */
@@ -284,5 +298,6 @@ PORT pic14_port =
   1,                           /* transform >= to ! < */
   1,                           /* transform != to !(a == b) */
   0,                           /* leave == */
+  FALSE,                        /* No array initializer support. */
   PORT_MAGIC
 };