# -*- perl -*- # # arch/alpha/sysstub.ph # # Script to generate system call stubs # # On Alpha, most system calls follow the standard convention, with the # system call number in r0 (v0), return an error value in r19 (a3) as # well as the return value in r0 (v0). # # A few system calls are dual-return with the second return value in # r20 (a4). sub make_sysstub($$$$@) { my($fname, $type, $sname, $stype, @args) = @_; $stype = $stype || 'common'; $stype = 'common' if ( $stype eq 'dual0' ); open(OUT, '>', "syscalls/${fname}.S"); print OUT "#include \n"; print OUT "#include \n"; print OUT "\n"; print OUT "\t.text\n"; print OUT "\t.type ${fname},\@function\n"; print OUT "\t.ent\t${fname}, 0\n"; # What is this? print OUT "\t.globl ${fname}\n"; print OUT "${fname}:\n"; print OUT "\tlda\tv0, __NR_${sname}(zero)\n"; print OUT "\tbr __syscall_${stype}\n"; print OUT "\t.size\t${fname},.-${fname}\n"; print OUT "\t.end\t${fname}\n"; close(OUT); } 1;