chiark / gitweb /
volume_id: provide libvolume_id.a file
[elogind.git] / klibc / klibc / arch / ppc64 / sysstub.ph
index 1469cc6071ad76f8af92fb8781a00281baf22413..9ee93701f6faecdd7ce5f7c9f01cde7c5f184a53 100644 (file)
@@ -5,10 +5,10 @@
 # Script to generate system call stubs
 #
 
-sub make_sysstub($$$$@) {
-    my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+    my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
 
-    open(OUT, '>', "syscalls/${fname}.S");
+    open(OUT, '>', "${outputdir}/${fname}.S");
     print OUT "#include <asm/unistd.h>\n";
     print OUT "\n";
     print OUT "\t.globl ${fname}\n";
@@ -16,16 +16,13 @@ sub make_sysstub($$$$@) {
     print OUT "\t.align 3\n";
     print OUT "${fname}:\n";
     print OUT "\t.quad .${fname},.TOC.\@tocbase,0\n";
-    print OUT "\t.size ${fname},24\n";
     print OUT "\t.text\n";
     print OUT "\t.type .${fname},\@function\n";
     print OUT "\t.globl .${fname}\n";
     print OUT ".${fname}:\n";
     print OUT "\tli 0,__NR_${sname}\n";
     print OUT "\tsc\n";
-    print OUT "\tmfcr 0\n";
-    print OUT "\trldicl. 9,0,36,63\n";
-    print OUT "\tbeqlr- 0\n";
+    print OUT "\tbnslr\n";
     print OUT "\tb .__syscall_error\n";
     print OUT "\t.size .${fname},.-.${fname}\n";
     close(OUT);