# -*- 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 \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;