mkfile 2.8 KB

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