6502: syscalls with no argument require nothing pushing
authorAlan Cox <alan@linux.intel.com>
Sat, 17 Jan 2015 14:46:30 +0000 (14:46 +0000)
committerAlan Cox <alan@linux.intel.com>
Sat, 17 Jan 2015 14:46:30 +0000 (14:46 +0000)
Library/tools/syscall_6502.c

index 4ae15e8..d3ee6c8 100644 (file)
@@ -21,7 +21,10 @@ static void write_call(int n)
   fprintf(fp, "\t.export _%s\n\n", syscall_name[n]);
   fprintf(fp, "\t.import __syscall\n\n", syscall_name[n]);
   fprintf(fp, "\t.import pushax\n\n");
-  fprintf(fp, ".proc _%s\n\tjsr pushax\n\tldx #%d\n", syscall_name[n], n);
+  fprintf(fp, ".proc _%s\n", syscall_name[n]);
+  if (syscall_args[n])
+    fprintf(fp, "\tjsr pushax\n");
+  fprintf(fp, "\tldx #%d\n", n);
   fprintf(fp, "\tldy #%d\n", 2 * syscall_args[n]);
   fprintf(fp, "\tjmp __syscall\n\n.endproc\n");
   fclose(fp);