blob: 256ea3d53432c5603fa2fcf7429c88fc2a6cbd17 [file] [log] [blame]
# -*- perl -*-
#
# arch/arm/sysstub.ph
#
# Script to generate system call stubs
#
sub make_sysstub($$$$$@) {
my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\t.text\n";
print OUT "\t.type\t${fname}, #function\n";
print OUT "\t.globl ${fname}\n";
print OUT "\t.align\t4\n";
print OUT "#ifndef __thumb__\n";
# ARM version first
print OUT "${fname}:\n";
print OUT "\tstmfd\tsp!,{r4,r5,lr}\n";
print OUT "\tldr\tr4,[sp,#12]\n";
print OUT "\tldr\tr5,[sp,#16]\n";
print OUT "\tswi\t# __NR_${sname}\n";
print OUT "\tb\t__syscall_common\n";
print OUT "#else\n";
# Thumb version
print OUT "\t.thumb_func\n";
print OUT "${fname}:\n";
print OUT "\tpush\t{r4,r5,r7,pc}\n";
print OUT "\tmov\tr7, # __NR_${sname}\n";
print OUT "\tb\t__syscall_common\n";
print OUT "#endif\n";
print OUT "\t.size\t__syscall${i},.-__syscall${i}\n";
}
1;