mkfile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. echo RET
  49. case 386
  50. echo TEXT $i'(SB)', 1, '$0'
  51. echo MOVL '$'$n, AX
  52. echo INT '$'64
  53. if(~ $i seek) {
  54. echo 'CMPL AX,$-1
  55. JNE 4(PC)
  56. MOVL a+0(FP),CX
  57. MOVL AX,0(CX)
  58. MOVL AX,4(CX)'
  59. }
  60. echo RET
  61. case amd64
  62. if(~ $i seek)
  63. echo TEXT _seek'(SB)', 1, '$0'
  64. if not
  65. echo TEXT $i'(SB)', 1, '$0'
  66. echo MOVQ RARG, 'a0+0(FP)'
  67. echo MOVQ '$'$n, RARG
  68. echo SYSCALL
  69. echo RET
  70. case sparc sparc64
  71. echo TEXT $i'(SB)', 1, '$0'
  72. echo MOVW R7, '0(FP)'
  73. echo MOVW '$'$n, R7
  74. echo TA R0
  75. if(~ $i seek) {
  76. echo 'CMP R7,$-1
  77. BNE 4(PC)
  78. MOVW a+0(FP),R8
  79. MOVW R7,0(R8)
  80. MOVW R7,4(R8)'
  81. }
  82. echo RETURN
  83. case 3210
  84. echo TEXT $i'(SB)', 1, '$0'
  85. echo MOVW R3, '0(FP)'
  86. echo MOVW '$'$n, R3
  87. echo WORD '$0x06000000'
  88. echo RETURN
  89. case 29000
  90. echo TEXT $i'(SB)', 1, '$0'
  91. echo MOVL R69, '0(FP)'
  92. echo MOVL '$'$n, R69
  93. echo EMULATE 0
  94. echo RET
  95. case arm
  96. echo TEXT $i'(SB)', 1, '$0'
  97. echo MOVW R0, '0(FP)'
  98. echo MOVW '$'$n, R0
  99. echo SWI 0
  100. echo RET
  101. case power
  102. echo TEXT $i'(SB)', 1, '$0'
  103. echo MOVW R3, '0(FP)'
  104. echo MOVW '$'$n, R3
  105. echo SYSCALL
  106. if(~ $i seek) {
  107. echo 'CMP R3,$-1
  108. BNE 4(PC)
  109. MOVW a+0(FP),R8
  110. MOVW R3,0(R8)
  111. MOVW R3,4(R8)'
  112. }
  113. echo RETURN
  114. case alpha
  115. j=$i
  116. if(~ $i seek) j=_seek
  117. echo TEXT $j'(SB)', 1, '$0'
  118. echo MOVL R0, '0(FP)'
  119. echo MOVQ '$'$n, R0
  120. echo CALL_PAL '$'0x83
  121. echo RET
  122. }} > $i.s
  123. $AS $i.s
  124. }
  125. ar vu /$objtype/lib/libc.a *.$O
  126. rm -f *.$O *.s
  127. nuke clean:V:
  128. rm -f *.[$OS]
  129. installall:V:
  130. for(objtype in $CPUS) mk install
  131. update:V:
  132. update $UPDATEFLAGS mkfile sys.h