mkfile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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 68020
  11. echo TEXT $i'(SB)', 1, '$0'
  12. echo MOVL '$'$n, R0
  13. echo TRAP '$0'
  14. echo RTS
  15. case mips
  16. echo TEXT $i'(SB)', 1, '$0'
  17. echo MOVW R1, '0(FP)'
  18. echo MOVW '$'$n, R1
  19. echo SYSCALL
  20. if(~ $i seek) {
  21. echo 'MOVW $-1,R5
  22. BNE R1,R5,4(PC)
  23. MOVW a+0(FP),R5
  24. MOVW R1,0(R5)
  25. MOVW R1,4(R5)'
  26. }
  27. echo RET
  28. case mips2
  29. echo TEXT $i'(SB)', 1, '$0'
  30. echo MOVW R1, '0(FP)'
  31. echo MOVW '$'$n, R1
  32. echo ADD '$4',R29
  33. echo SYSCALL
  34. echo ADD '$-4',R29
  35. echo RET
  36. case spim
  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. if(~ $i seek) { # untested so far - geoff
  44. echo 'MOVW $-1,R5
  45. BNE R1,R5,4(PC)
  46. MOVW a+0(FP),R5
  47. MOVW R1,0(R5)
  48. MOVW R1,4(R5)'
  49. }
  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. if(~ $i seek) {
  103. echo 'CMP $-1,R0
  104. BNE 4(PC)
  105. MOVW a+0(FP),R1
  106. MOVW R0,0(R1)
  107. MOVW R0,4(R1)'
  108. }
  109. echo RET
  110. case power
  111. echo TEXT $i'(SB)', 1, '$0'
  112. echo MOVW R3, '0(FP)'
  113. echo MOVW '$'$n, R3
  114. echo SYSCALL
  115. if(~ $i seek) {
  116. echo 'CMP R3,$-1
  117. BNE 4(PC)
  118. MOVW a+0(FP),R8
  119. MOVW R3,0(R8)
  120. MOVW R3,4(R8)'
  121. }
  122. echo RETURN
  123. case alpha
  124. j=$i
  125. if(~ $i seek) j=_seek
  126. echo TEXT $j'(SB)', 1, '$0'
  127. echo MOVL R0, '0(FP)'
  128. echo MOVQ '$'$n, R0
  129. echo CALL_PAL '$'0x83
  130. echo RET
  131. }} > $i.s
  132. $AS $i.s
  133. }
  134. ar vu /$objtype/lib/libc.a *.$O
  135. rm -f *.$O *.s
  136. nuke clean:V:
  137. rm -f *.[$OS]
  138. installall:V:
  139. for(objtype in $CPUS) mk install
  140. update:V:
  141. update $UPDATEFLAGS mkfile sys.h