5 # Script to generate system call stubs
9 sub make_sysstub($$$$@) {
10 my($fname, $type, $sname, $stype, @args) = @_;
12 open(OUT, '>', "syscalls/${fname}.S");
13 print OUT "#include <asm/unistd.h>\n";
15 print OUT "\t.text\n";
16 print OUT "\t.type\t${fname}, #function\n";
17 print OUT "\t.globl ${fname}\n";
18 print OUT "\t.align\t4\n";
20 print OUT "#ifndef __thumb__\n";
23 print OUT "${fname}:\n";
24 print OUT "\tstmfd\tsp!,{r4,r5,lr}\n";
25 print OUT "\tldr\tr4,[sp,#12]\n";
26 print OUT "\tldr\tr5,[sp,#16]\n";
27 print OUT "\tswi\t# __NR_${sname}\n";
28 print OUT "\tb\t__syscall_common\n";
33 print OUT "\t.thumb_func\n";
34 print OUT "${fname}:\n";
35 print OUT "\tpush\t{r4,r5,r7,pc}\n";
36 print OUT "\tmov\tr7, # __NR_${sname}\n";
37 print OUT "\tb\t__syscall_common\n";
41 print OUT "\t.size\t__syscall${i},.-__syscall${i}\n";