save 2 bytes stack space with the option --main-return. The ljmp could probably be...
[fw/sdcc] / src / SDCCglue.c
index d8f216e24f6bdb0b09411ea9f4bde7167236fbc7..9b3b509f93d1c14361b4165b3068dc05abd42f6d 100644 (file)
@@ -1880,21 +1880,18 @@ glue (void)
       /* entry point @ start of CSEG */
       fprintf (asmFile, "__sdcc_program_startup:\n");
 
-      /* put in the call to main */
-      fprintf (asmFile, "\tlcall\t_main\n");
+      /* put in jump or call to main */
       if (options.mainreturn)
-       {
-
-         fprintf (asmFile, ";\treturn from main ; will return to caller\n");
-         fprintf (asmFile, "\tret\n");
-
-       }
+        {
+          fprintf (asmFile, "\tljmp\t_main\n");   /* needed? */
+          fprintf (asmFile, ";\treturn from main will return to caller\n");
+        }
       else
-       {
-
-         fprintf (asmFile, ";\treturn from main will lock up\n");
-         fprintf (asmFile, "\tsjmp .\n");
-       }
+        {
+          fprintf (asmFile, "\tlcall\t_main\n");
+          fprintf (asmFile, ";\treturn from main will lock up\n");
+          fprintf (asmFile, "\tsjmp .\n");
+        }
     }
   copyFile (asmFile, code->oFile);