Home
       gensys.sh - scc - simple c99 compiler
  HTML git clone git://git.simple-cc.org/scc
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       gensys.sh (478B)
       ---
            1 #!/bin/sh
            2 
            3 #
            4 # This job is very easy because app and kernel ABI are identical
            5 # until the 4th parameter, so we only have to set the syscall
            6 # number in rax
            7 
            8 sed -n "
            9      s/[         ]*#.*//
           10      /$1/p" syscall.lst |
           11 while read num name nargs
           12 do
           13 cat <<EOF > $name.s
           14         .file        "$name.s"
           15 
           16         .globl        $name
           17 $name:
           18         `case $nargs in 4|5|6)
           19                 echo "movq       %rcx,%r10"
           20                 ;;
           21         esac`
           22         movq        \$$num,%rax
           23         syscall
           24         jb        1f
           25         retq
           26 
           27 1:        movq        %rax,(errno)
           28         movq        \$-1,%rax
           29         retq
           30 EOF
           31 done