mkfile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. NPROC=1
  2. </$objtype/mkfile
  3. SYSH=/sys/src/libc/9syscall/sys.h
  4. all:V: install
  5. install:V:
  6. SYS=`{sed '/^#define._/d; s/#define.([A-Z0-9_]*).*/\1/' $SYSH}
  7. for(I in $SYS) {
  8. i=$I
  9. i=_^$i
  10. n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' $SYSH}
  11. {switch($objtype){
  12. case 68000
  13. echo TEXT $i'(SB)', 1, '$0'
  14. echo MOVL '$'$n, R0
  15. echo TRAP '$0'
  16. echo RTS
  17. case 68020
  18. echo TEXT $i'(SB)', 1, '$0'
  19. echo MOVL '$'$n, R0
  20. echo TRAP '$0'
  21. echo RTS
  22. case mips
  23. echo TEXT $i'(SB)', 1, '$0'
  24. echo MOVW R1, '0(FP)'
  25. echo MOVW '$'$n, R1
  26. echo SYSCALL
  27. if(~ $i _SEEK) {
  28. echo 'MOVW $-1,R5
  29. BNE R1,R5,4(PC)
  30. MOVW a+0(FP),R5
  31. MOVW R1,0(R5)
  32. MOVW R1,4(R5)'
  33. }
  34. echo RET
  35. case mips2
  36. echo TEXT $i'(SB)', 1, '$0'
  37. echo MOVW R1, '0(FP)'
  38. echo MOVW '$'$n, R1
  39. echo ADD '$4',R29
  40. echo SYSCALL
  41. echo ADD '$-4',R29
  42. echo RET
  43. case spim
  44. echo TEXT $i'(SB)', 1, '$0'
  45. echo MOVW R1, '0(FP)'
  46. echo MOVW '$'$n, R1
  47. echo ADD '$4',R29
  48. echo SYSCALL
  49. echo ADD '$-4',R29
  50. echo RET
  51. case 386
  52. echo TEXT $i'(SB)', 1, '$0'
  53. echo MOVL '$'$n, AX
  54. echo INT '$'64
  55. if(~ $i _SEEK) {
  56. echo 'CMPL AX,$-1
  57. JNE 4(PC)
  58. MOVL a+0(FP),CX
  59. MOVL AX,0(CX)
  60. MOVL AX,4(CX)'
  61. }
  62. echo RET
  63. case amd64
  64. if(~ $i _SEEK)
  65. echo TEXT __SEEK'(SB)', 1, '$0'
  66. if not
  67. echo TEXT $i'(SB)', 1, '$0'
  68. echo MOVQ RARG, 'a0+0(FP)'
  69. echo MOVQ '$'$n, RARG
  70. echo SYSCALL
  71. echo RET
  72. case sparc sparc64
  73. echo TEXT $i'(SB)', 1, '$0'
  74. echo MOVW R7, '0(FP)'
  75. echo MOVW '$'$n, R7
  76. echo TA R0
  77. if(~ $i _SEEK) {
  78. echo 'CMP R7,$-1
  79. BNE 4(PC)
  80. MOVW a+0(FP),R8
  81. MOVW R7,0(R8)
  82. MOVW R7,4(R8)'
  83. }
  84. echo RETURN
  85. case 3210
  86. echo TEXT $i'(SB)', 1, '$0'
  87. echo MOVW R3, '0(FP)'
  88. echo MOVW '$'$n, R3
  89. echo WORD '$0x06000000'
  90. echo RETURN
  91. case 29000
  92. echo TEXT $i'(SB)', 1, '$0'
  93. echo MOVL R69, '0(FP)'
  94. echo MOVL '$'$n, R69
  95. echo EMULATE 0
  96. echo RET
  97. case arm
  98. echo TEXT $i'(SB)', 1, '$0'
  99. echo MOVW R0, '0(FP)'
  100. echo MOVW '$'$n, R0
  101. echo SWI 0
  102. echo RET
  103. case power
  104. echo TEXT $i'(SB)', 1, '$0'
  105. echo MOVW R3, '0(FP)'
  106. echo MOVW '$'$n, R3
  107. echo SYSCALL
  108. if(~ $i _SEEK) {
  109. echo 'CMP R3,$-1
  110. BNE 4(PC)
  111. MOVW a+0(FP),R8
  112. MOVW R3,0(R8)
  113. MOVW R3,4(R8)'
  114. }
  115. echo RETURN
  116. case alpha
  117. j=$i
  118. # /sys/src/libc/9syscall/mkfile uses:
  119. # if(~ $i seek) j=_seek
  120. if(~ $i _SEEK) j=__SEEK
  121. echo TEXT $j'(SB)', 1, '$0'
  122. echo MOVL R0, '0(FP)'
  123. echo MOVQ '$'$n, R0
  124. echo CALL_PAL '$'0x83
  125. echo RET
  126. }} > $i.s
  127. $AS $i.s
  128. }
  129. ar vu /$objtype/lib/ape/libap.a *.$O
  130. rm -f *.$O *.s
  131. nuke clean:V:
  132. rm -f *.[$OS]
  133. installall:V:
  134. for(objtype in $CPUS) mk install