mkfile 2.4 KB

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