sto_res.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. |
  2. | sto_res.sa 3.1 12/10/90
  3. |
  4. | Takes the result and puts it in where the user expects it.
  5. | Library functions return result in fp0. If fp0 is not the
  6. | users destination register then fp0 is moved to the
  7. | correct floating-point destination register.  fp0 and fp1
  8. | are then restored to the original contents. 
  9. |
  10. | Input: result in fp0,fp1 
  11. |
  12. | d2 & a0 should be kept unmodified
  13. |
  14. | Output: moves the result to the true destination reg or mem
  15. |
  16. | Modifies: destination floating point register
  17. |
  18. | Copyright (C) Motorola, Inc. 1990
  19. | All Rights Reserved
  20. |
  21. | THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA 
  22. | The copyright notice above does not evidence any  
  23. | actual or intended publication of such source code.
  24. STO_RES: |idnt 2,1 | Motorola 040 Floating Point Software Package
  25. |section 8
  26. .include "fpsp.h"
  27. .global sto_cos
  28. sto_cos:
  29. bfextu CMDREG1B(%a6){#13:#3},%d0 |extract cos destination
  30. cmpib #3,%d0 |check for fp0/fp1 cases
  31. bles c_fp0123
  32. fmovemx %fp1-%fp1,-(%a7)
  33. moveql #7,%d1
  34. subl %d0,%d1 |d1 = 7- (dest. reg. no.)
  35. clrl %d0
  36. bsetl %d1,%d0 |d0 is dynamic register mask
  37. fmovemx (%a7)+,%d0
  38. rts
  39. c_fp0123:
  40. cmpib #0,%d0
  41. beqs c_is_fp0
  42. cmpib #1,%d0
  43. beqs c_is_fp1
  44. cmpib #2,%d0
  45. beqs c_is_fp2
  46. c_is_fp3:
  47. fmovemx %fp1-%fp1,USER_FP3(%a6)
  48. rts
  49. c_is_fp2:
  50. fmovemx %fp1-%fp1,USER_FP2(%a6)
  51. rts
  52. c_is_fp1:
  53. fmovemx %fp1-%fp1,USER_FP1(%a6)
  54. rts
  55. c_is_fp0:
  56. fmovemx %fp1-%fp1,USER_FP0(%a6)
  57. rts
  58. .global sto_res
  59. sto_res:
  60. bfextu CMDREG1B(%a6){#6:#3},%d0 |extract destination register
  61. cmpib #3,%d0 |check for fp0/fp1 cases
  62. bles fp0123
  63. fmovemx %fp0-%fp0,-(%a7)
  64. moveql #7,%d1
  65. subl %d0,%d1 |d1 = 7- (dest. reg. no.)
  66. clrl %d0
  67. bsetl %d1,%d0 |d0 is dynamic register mask
  68. fmovemx (%a7)+,%d0
  69. rts
  70. fp0123:
  71. cmpib #0,%d0
  72. beqs is_fp0
  73. cmpib #1,%d0
  74. beqs is_fp1
  75. cmpib #2,%d0
  76. beqs is_fp2
  77. is_fp3:
  78. fmovemx %fp0-%fp0,USER_FP3(%a6)
  79. rts
  80. is_fp2:
  81. fmovemx %fp0-%fp0,USER_FP2(%a6)
  82. rts
  83. is_fp1:
  84. fmovemx %fp0-%fp0,USER_FP1(%a6)
  85. rts
  86. is_fp0:
  87. fmovemx %fp0-%fp0,USER_FP0(%a6)
  88. rts
  89. |end