sysstub.ph

来自「klibc精简化的c程序库」· PH 代码 · 共 64 行

PH
64
字号
# -*- perl -*-## arch/s390/sysstub.ph## Script to generate system call stubs#sub make_sysstub($$$$$@) {    my($outputdir, $fname, $type, $sname, $stype, @args) = @_;    my($t);    my($r, $llregs) = (0, ($typesize{'void *'} == 8) ? 1 : 2);    foreach $t (@args) {	    $r += ($typesize{$t} == 8) ? $llregs : 1;    }    open(OUT, '>', "${outputdir}/${fname}.S");    print OUT <<EOF;#include <asm/unistd.h>	.type ${fname},\@function	.globl ${fname}${fname}:.if ${r} > 6.print "System call with more than six parameters not supported yet.".err.endif.if ${r} == 6#ifndef __s390x__	st	%r7,56(%r15)	l	%r7,96(%r15)#else	stg	%r7,80(%r15)	lg	%r7,160(%r15)#endif.endif.if __NR_${sname} < 256	svc	__NR_${sname}.else	la	%r1,__NR_${sname}	svc	0.endif.if ${r} == 6#ifndef __s390x__	l	%r7,56(%r15)#else	lg	%r7,160(%r15)#endif.endif#ifndef __s390x__	bras	%r3,1f	.long	__syscall_common1:	l	%r3,0(%r3)	br	%r3#else	brasl	%r3,__syscall_common#endif	.size	${fname},.-${fname}EOF    close(OUT);}1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?