From bb2d78b0b732e4b255dec2e62df105039f63047e Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Mon, 17 Dec 2012 22:47:17 +0300 Subject: [PATCH] x86: Teach syscall table generating script accept argument We'll have to generate syscall table in another form, prepare for it . Signed-off-by: Pavel Emelyanov --- arch/x86/Makefile | 2 +- arch/x86/syscalls-x86-64.sh | 55 +++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index d81e0f72a..5896efeef 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -17,7 +17,7 @@ CFLAGS += -c -fpie -Wstrict-prototypes -Wa,--noexecstack -D__ASSEMBLY__ -nostdl $(SYS-ASM): $(SYS-GEN) $(SYS-DEF) $(SYS-ASM-COMMON) $(SYS-TYPES) $(E) " GEN " $@ $(Q) $(SH) \ - $(SYS-GEN) \ + $(SYS-GEN) --asm \ $(SYS-DEF) \ $(SYS-CODES) \ $(SYS-PROTO) \ diff --git a/arch/x86/syscalls-x86-64.sh b/arch/x86/syscalls-x86-64.sh index 1372cd5d8..809967c44 100644 --- a/arch/x86/syscalls-x86-64.sh +++ b/arch/x86/syscalls-x86-64.sh @@ -1,32 +1,39 @@ #!/bin/sh -in=$1 -codesout=$2 -protosout=$3 -asmout=$4 -asmcommon=$5 -prototypes=`echo $6 | sed -e 's/.*include\///g'` +function gen_asm() { + in=$1 + codesout=$2 + protosout=$3 + asmout=$4 + asmcommon=$5 + prototypes=`echo $6 | sed -e 's/.*include\///g'` -codesdef=`echo $codesout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _` -protosdef=`echo $protosout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _` + codesdef=`echo $codesout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _` + protosdef=`echo $protosout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _` -echo "/* Autogenerated, don't edit */" > $codesout -echo "#ifndef $codesdef" >> $codesout -echo "#define $codesdef" >> $codesout + echo "/* Autogenerated, don't edit */" > $codesout + echo "#ifndef $codesdef" >> $codesout + echo "#define $codesdef" >> $codesout -echo "/* Autogenerated, don't edit */" > $protosout -echo "#ifndef $protosdef" >> $protosout -echo "#define $protosdef" >> $protosout -echo "#include \"$prototypes\"" >> $protosout -echo "#include \"$codesout\"" >> $protosout + echo "/* Autogenerated, don't edit */" > $protosout + echo "#ifndef $protosdef" >> $protosout + echo "#define $protosdef" >> $protosout + echo "#include \"$prototypes\"" >> $protosout + echo "#include \"$codesout\"" >> $protosout -echo "/* Autogenerated, don't edit */" > $asmout -echo "#include \"$codesout\"" >> $asmout -echo "#include \"$asmcommon\"" >> $asmout + echo "/* Autogenerated, don't edit */" > $asmout + echo "#include \"$codesout\"" >> $asmout + echo "#include \"$asmcommon\"" >> $asmout -cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "#define", $1, $2}' >> $codesout -cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "extern long ", $3, $4, ";"}' >> $protosout -cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "SYSCALL(", $3, ",", $2, ")"}' >> $asmout + cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "#define", $1, $2}' >> $codesout + cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "extern long ", $3, $4, ";"}' >> $protosout + cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "SYSCALL(", $3, ",", $2, ")"}' >> $asmout -echo "#endif /* $codesdef */" >> $codesout -echo "#endif /* $protosdef */" >> $protosout + echo "#endif /* $codesdef */" >> $codesout + echo "#endif /* $protosdef */" >> $protosout +} + +if [ "$1" = "--asm" ]; then + shift + gen_asm $@ +fi