mkfile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. NPROC=1
  2. </$objtype/mkfile
  3. install:V:
  4. SYS=`{sed '/^#define._X[123]/d; s/#define.([A-Z0-9_]*).*/\1/' sys.h}
  5. for(I in $SYS) {
  6. i=`{echo $I|tr A-Z a-z}
  7. n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' sys.h}
  8. if(~ $i exits) i=_exits
  9. {switch($objtype){
  10. case mips
  11. echo TEXT $i'(SB)', 1, '$0'
  12. echo MOVW R1, '0(FP)'
  13. echo MOVW '$'$n, R1
  14. echo SYSCALL
  15. if(~ $i seek || ~ $i nsec) {
  16. echo 'MOVW $-1,R5
  17. BNE R1,R5,4(PC)
  18. MOVW a+0(FP),R5
  19. MOVW R1,0(R5)
  20. MOVW R1,4(R5)'
  21. }
  22. echo RET
  23. case mips2
  24. echo TEXT $i'(SB)', 1, '$0'
  25. echo MOVW R1, '0(FP)'
  26. echo MOVW '$'$n, R1
  27. echo ADD '$4',R29
  28. echo SYSCALL
  29. echo ADD '$-4',R29
  30. echo RET
  31. case spim
  32. echo TEXT $i'(SB)', 1, '$0'
  33. echo MOVW R1, '0(FP)'
  34. echo MOVW '$'$n, R1
  35. echo ADD '$4',R29
  36. echo SYSCALL
  37. echo ADD '$-4',R29
  38. if(~ $i seek || ~ $i nsec) { # untested so far - geoff
  39. echo 'MOVW $-1,R5
  40. BNE R1,R5,4(PC)
  41. MOVW a+0(FP),R5
  42. MOVW R1,0(R5)
  43. MOVW R1,4(R5)'
  44. }
  45. echo RET
  46. case 386
  47. echo TEXT $i'(SB)', 1, '$0'
  48. echo MOVL '$'$n, AX
  49. echo INT '$'64
  50. if(~ $i seek || ~ $i nsec) {
  51. echo 'CMPL AX,$-1
  52. JNE 4(PC)
  53. MOVL a+0(FP),CX
  54. MOVL AX,0(CX)
  55. MOVL AX,4(CX)'
  56. }
  57. echo RET
  58. case amd64
  59. if(~ $i seek)
  60. echo TEXT _seek'(SB)', 1, '$0'
  61. if not
  62. echo TEXT $i'(SB)', 1, '$0'
  63. #
  64. # For architectures which pass the first argument
  65. # in a register, if the system call takes no arguments
  66. # there will be no 'a0+0(FP)' reserved on the stack.
  67. #
  68. if(! ~ $i nsec)
  69. echo MOVQ RARG, 'a0+0(FP)'
  70. echo MOVQ '$'$n, RARG
  71. echo SYSCALL
  72. echo RET
  73. case sparc
  74. echo TEXT $i'(SB)', 1, '$0'
  75. echo MOVW R7, '0(FP)'
  76. echo MOVW '$'$n, R7
  77. echo TA R0
  78. if(~ $i seek || ~ $i nsec) {
  79. echo 'CMP R7,$-1
  80. BNE 4(PC)
  81. MOVW a+0(FP),R8
  82. MOVW R7,0(R8)
  83. MOVW R7,4(R8)'
  84. }
  85. echo RETURN
  86. case arm
  87. echo TEXT $i'(SB)', 1, '$0'
  88. echo MOVW R0, '0(FP)'
  89. echo MOVW '$'$n, R0
  90. echo SWI 0
  91. if(~ $i seek || ~ $i nsec) {
  92. echo 'CMP $-1,R0
  93. BNE 4(PC)
  94. MOVW a+0(FP),R1
  95. MOVW R0,0(R1)
  96. MOVW R0,4(R1)'
  97. }
  98. echo RET
  99. case power
  100. echo TEXT $i'(SB)', 1, '$0'
  101. echo MOVW R3, '0(FP)'
  102. echo MOVW '$'$n, R3
  103. echo SYSCALL
  104. if(~ $i seek || ~ $i nsec) {
  105. echo 'CMP R3,$-1
  106. BNE 4(PC)
  107. MOVW a+0(FP),R8
  108. MOVW R3,0(R8)
  109. MOVW R3,4(R8)'
  110. }
  111. echo RETURN
  112. case power64
  113. if(~ $i seek)
  114. echo TEXT _seek'(SB)', 1, '$0'
  115. if not
  116. echo TEXT $i'(SB)', 1, '$0'
  117. echo MOVD R3, '0(FP)'
  118. echo MOVW '$'$n, R3
  119. echo SYSCALL
  120. echo RETURN
  121. }} > $i.s
  122. $AS $i.s
  123. }
  124. ar vu /$objtype/lib/libc.a *.$O
  125. rm -f *.$O *.s
  126. nuke clean:V:
  127. rm -f *.[$OS]
  128. installall:V:
  129. for(objtype in $CPUS) mk install
  130. update:V:
  131. update $UPDATEFLAGS mkfile sys.h