* support/regression/tests/bug-477927.c: Added.
[fw/sdcc] / src / pic / main.c
index 2c0f3154da655250b50024ddbf6ef52b10cbff65..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
@@ -159,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. */
@@ -225,14 +228,17 @@ PORT pic_port =
   {
     _asmCmd,
     NULL,
+    NULL,
     NULL,
        //"-plosgffc",          /* Options with debug */
        //"-plosgff",           /* Options without debug */
-    0
+    0,
+    ".asm"
   },
   {
     _linkCmd,
     NULL,
+    NULL,
     ".rel"
   },
   {
@@ -240,7 +246,7 @@ PORT pic_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)
@@ -268,7 +274,7 @@ PORT pic_port =
   },
     /* pic14 has an 8 bit mul */
   {
-    1, 0
+    1, -1
   },
   "_",
   _pic14_init,
@@ -283,6 +289,8 @@ PORT pic_port =
   _pic14_reset_regparm,
   _pic14_regparm,
   NULL,
+  NULL,
+  NULL,
   FALSE,
   0,                           /* leave lt */
   0,                           /* leave gt */
@@ -290,5 +298,6 @@ PORT pic_port =
   1,                           /* transform >= to ! < */
   1,                           /* transform != to !(a == b) */
   0,                           /* leave == */
+  FALSE,                        /* No array initializer support. */
   PORT_MAGIC
 };