_mcs51_genXINIT: xdata initialization is 13 bytes shorter now
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 1 Nov 2003 20:58:58 +0000 (20:58 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 1 Nov 2003 20:58:58 +0000 (20:58 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2981 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/main.c

index cff99d5f1db12b8e14537533a3e3be89ea3e051a..30adbfd850308cee8f7fefcbd0bf22d97fcb4729 100644 (file)
@@ -157,14 +157,11 @@ _mcs51_genIVT (FILE * of, symbol ** interrupts, int maxInterrupts)
 static void _mcs51_genXINIT (FILE * of) {
   fprintf (of, ";      _mcs51_genXINIT() start\n");
   fprintf (of, "       mov     a,#l_XINIT\n");
-  fprintf (of, "       orl     a,#l_XINIT>>8\n");
-  fprintf (of, "       jz      00003$\n");
-  fprintf (of, "       mov     a,#s_XINIT\n");
-  fprintf (of, "       add     a,#l_XINIT\n");
   fprintf (of, "       mov     r1,a\n");
-  fprintf (of, "       mov     a,#s_XINIT>>8\n");
-  fprintf (of, "       addc    a,#l_XINIT>>8\n");
-  fprintf (of, "       mov     r2,a\n");
+  fprintf (of, "       mov     r2,#(l_XINIT >> 8)\n");
+  fprintf (of, "       orl     a,r2\n");
+  fprintf (of, "       jz      00003$\n");
+  fprintf (of, "       inc     r2\n");  
   fprintf (of, "       mov     dptr,#s_XINIT\n");
   fprintf (of, "       mov     r0,#s_XISEG\n");
   fprintf (of, "       mov     p2,#(s_XISEG >> 8)\n");
@@ -175,10 +172,8 @@ static void _mcs51_genXINIT (FILE * of) {
   fprintf (of, "       inc     r0\n");
   fprintf (of, "       cjne    r0,#0,00002$\n");
   fprintf (of, "       inc     p2\n");
-  fprintf (of, "00002$:        mov     a,dpl\n");
-  fprintf (of, "       cjne    a,ar1,00001$\n");
-  fprintf (of, "       mov     a,dph\n");
-  fprintf (of, "       cjne    a,ar2,00001$\n");
+  fprintf (of, "00002$:        djnz    r1,00001$\n");
+  fprintf (of, "       djnz    r2,00001$\n");
   fprintf (of, "       mov     p2,#0xFF\n");
   fprintf (of, "00003$:\n");
   fprintf (of, ";      _mcs51_genXINIT() end\n");