mkfile 2.6 KB

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