3 $v = $ENV{'KBUILD_VERBOSE'};
4 $quiet = defined($v) ? !$v : 0;
12 die "$0: Unknown option: $arg\n";
18 ($file, $arch) = @args;
20 if (!open(FILE, "< $file")) {
24 while ( defined($line = <FILE>) ) {
26 $line =~ s/\s*[\#\;].*$//; # Strip comments and trailing blanks
29 if ( $line =~ /^\s*\<\?\>\s*(.*)\s+([_a-zA-Z][_a-zA-Z0-9]+)\s*\((.*)\)$/ ) {
34 @args = split(/\s*\,\s*/, $argv);
39 push(@cargs, "$arg a".$i++);
43 if ( $arch eq 'i386' ) {
44 open(OUT, '>', "socketcalls/${name}.S")
45 or die "$0: Cannot open socketcalls/${name}.S\n";
47 print OUT "#include <sys/socketcalls.h>\n";
49 print OUT "\t.text\n";
50 print OUT "\t.align 4\n";
51 print OUT "\t.globl ${name}\n";
52 print OUT "\t.type ${name},\@function\n";
53 print OUT "${name}:\n";
54 print OUT "\tmovb \$SYS_\U${name}\E,%al\n";
55 print OUT "\tjmp __socketcall_common\n";
56 print OUT "\t.size ${name},.-${name}\n";
59 open(OUT, '>', "socketcalls/${name}.c")
60 or die "$0: Cannot open socketcalls/${name}.c\n";
62 print OUT "#include \"../socketcommon.h\"\n";
64 print OUT "#ifndef __NR_${name}\n\n";
66 print OUT "extern long __socketcall(int, const unsigned long *);\n\n";
68 print OUT "$type $name (", join(', ', @cargs), ")\n";
70 print OUT " unsigned long args[$nargs];\n";
71 for ( $i = 0 ; $i < $nargs ; $i++ ) {
72 print OUT " args[$i] = (unsigned long)a$i;\n";
74 print OUT " return ($type) __socketcall(SYS_\U${name}\E, args);\n";
82 die "$file:$.: Could not parse input\n";