home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.14 / udk / usr / ccs / lib / fur / flowlog.s < prev    next >
Encoding:
Text File  |  1998-08-19  |  3.3 KB  |  216 lines

  1. #ident    "@(#)fur:i386/cmd/fur/flowlog.s    1.1"
  2. .globl blocklog_END_TYPE
  3. .globl blocklog_JO
  4. .globl blocklog_JNO
  5. .globl blocklog_JB
  6. .globl blocklog_JAE
  7. .globl blocklog_JE
  8. .globl blocklog_JNE
  9. .globl blocklog_JBE
  10. .globl blocklog_JA
  11. .globl blocklog_JS
  12. .globl blocklog_JNS
  13. .globl blocklog_JP
  14. .globl blocklog_JNP
  15. .globl blocklog_JL
  16. .globl blocklog_JGE
  17. .globl blocklog_JLE
  18. .globl blocklog_JG
  19.  
  20. .weak    blocklog_JUMP
  21. .set    blocklog_JUMP,blocklog_notarg
  22. .weak    blocklog_RET
  23. .set    blocklog_RET,blocklog_notarg
  24. .weak    blocklog_FALL_THROUGH
  25. .set    blocklog_FALL_THROUGH,blocklog_notarg
  26. .weak    blocklog_CALL
  27. .set    blocklog_CALL,blocklog_notarg
  28. .weak    blocklog_PSEUDO_CALL
  29. .set    blocklog_PSEUDO_CALL,blocklog_notarg
  30. .weak    blocklog_IJUMP
  31. .set    blocklog_IJUMP,blocklog_notarg
  32. .weak    blocklog_PUSH
  33. .set    blocklog_PUSH,blocklog_notarg
  34. .weak    blocklog_POP
  35. .set    blocklog_POP,blocklog_notarg
  36.  
  37. blocklog_END_TYPE:
  38. blocklog_JO:
  39.     jo blocklog_log_t
  40.     jmp blocklog_log_f
  41. blocklog_JNO:
  42.     jno blocklog_log_t
  43.     jmp blocklog_log_f
  44. blocklog_JB:
  45.     jb blocklog_log_t
  46.     jmp blocklog_log_f
  47. blocklog_JAE:
  48.     jae blocklog_log_t
  49.     jmp blocklog_log_f
  50. blocklog_JE:
  51.     je blocklog_log_t
  52.     jmp blocklog_log_f
  53. blocklog_JNE:
  54.     jne blocklog_log_t
  55.     jmp blocklog_log_f
  56. blocklog_JBE:
  57.     jbe blocklog_log_t
  58.     jmp blocklog_log_f
  59. blocklog_JA:
  60.     ja blocklog_log_t
  61.     jmp blocklog_log_f
  62. blocklog_JS:
  63.     js blocklog_log_t
  64.     jmp blocklog_log_f
  65. blocklog_JNS:
  66.     jns blocklog_log_t
  67.     jmp blocklog_log_f
  68. blocklog_JP:
  69.     jp blocklog_log_t
  70.     jmp blocklog_log_f
  71. blocklog_JNP:
  72.     jnp blocklog_log_t
  73.     jmp blocklog_log_f
  74. blocklog_JL:
  75.     jl blocklog_log_t
  76.     jmp blocklog_log_f
  77. blocklog_JGE:
  78.     jge blocklog_log_t
  79.     jmp blocklog_log_f
  80. blocklog_JLE:
  81.     jle blocklog_log_t
  82.     jmp blocklog_log_f
  83. blocklog_JG:
  84.     jg blocklog_log_t
  85.     jmp blocklog_log_f
  86.  
  87. blocklog_log_t:
  88.     pushl    %ecx
  89.     movl    4(%esp),%ecx
  90.     movl    %eax,4(%esp)
  91.     movl    8(%esp),%eax
  92.     movl    %ecx,8(%esp)
  93.     pushf
  94. ifdef(`KERNEL', `
  95.         movw    %ds,%cx
  96.         cmpl    $0x108,%ecx
  97.         jne        nolog1
  98. ', `
  99.         cmpl    $0,BlockCount
  100.         je        reinit1
  101. continue1:
  102. ')
  103.     leal   (%eax,%eax,2),%eax
  104.     shll   $2,%eax
  105. ifdef(`KERNEL', `
  106.         addl    $BlockCount,%eax
  107. ',`
  108.         addl    BlockCount,%eax
  109. ')
  110.     incl    (%eax)
  111.     incl    8(%eax)
  112.     popf
  113.     popl    %ecx
  114.     popl    %eax
  115.     ret    
  116. ifdef(`KERNEL', `', `
  117. reinit1:
  118.     pushl %eax
  119.     call blockinit
  120.     popl %eax
  121.     jmp continue1
  122. ')
  123. ifdef(`KERNEL', `
  124. nolog1:
  125.     popf
  126.     popl    %ecx
  127.     popl    %eax
  128.     ret    
  129. ')
  130. blocklog_log_f:
  131.     pushl    %ecx
  132.     movl    4(%esp),%ecx
  133.     movl    %eax,4(%esp)
  134.     movl    8(%esp),%eax
  135.     movl    %ecx,8(%esp)
  136.     pushf
  137. ifdef(`KERNEL', `
  138.         movw    %ds,%cx
  139.         cmpl    $0x108,%ecx
  140.         jne        nolog2
  141. ', `
  142.         cmpl    $0,BlockCount
  143.         je        reinit2
  144. continue2:
  145. ')
  146.     leal   (%eax,%eax,2),%eax
  147.     shll   $2,%eax
  148. ifdef(`KERNEL', `
  149.         addl    $BlockCount,%eax
  150. ',`
  151.         addl    BlockCount,%eax
  152. ')
  153.     incl    (%eax)
  154.     addl    $4,%eax
  155.     incl    (%eax)
  156.     popf
  157.     popl    %ecx
  158.     popl    %eax
  159.     ret    
  160. ifdef(`KERNEL', `', `
  161. reinit2:
  162.     pushl %eax
  163.     call blockinit
  164.     popl %eax
  165.     jmp continue2
  166. ')
  167. ifdef(`KERNEL', `
  168. nolog2:
  169.     popf
  170.     popl    %ecx
  171.     popl    %eax
  172.     ret    
  173. ')
  174. blocklog_notarg:
  175.     pushl    %ecx
  176.     movl    4(%esp),%ecx
  177.     movl    %eax,4(%esp)
  178.     movl    8(%esp),%eax
  179.     movl    %ecx,8(%esp)
  180.     pushf
  181. ifdef(`KERNEL', `
  182.         movw    %ds,%cx
  183.         cmpl    $0x108,%ecx
  184.         jne        nolog3
  185. ', `
  186.         cmpl    $0,BlockCount
  187.         je        reinit3
  188. continue3:
  189. ')
  190.     leal   (%eax,%eax,2),%eax
  191.     shll   $2,%eax
  192. ifdef(`KERNEL', `
  193.         addl    $BlockCount,%eax
  194. ',`
  195.         addl    BlockCount,%eax
  196. ')
  197.     incl    (%eax)
  198.     popf
  199.     popl    %ecx
  200.     popl    %eax
  201.     ret    
  202. ifdef(`KERNEL', `', `
  203. reinit3:
  204.     pushl %eax
  205.     call blockinit
  206.     popl %eax
  207.     jmp continue3
  208. ')
  209. ifdef(`KERNEL', `
  210. nolog3:
  211.     popf
  212.     popl    %ecx
  213.     popl    %eax
  214.     ret    
  215. ')
  216.