x_bsun.s
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* x_bsun.s - Motorola 68040 FP branch/set unordered exception handler (EXC) */
  2. /* Copyright 1991-1993 Wind River Systems, Inc. */
  3. .data
  4. .globl _copyright_wind_river
  5. .long _copyright_wind_river
  6. /*
  7. modification history
  8. --------------------
  9. 01e,21jul93,kdl  added .text (SPR #2372).
  10. 01d,23aug92,jcf  changed bxxx to jxx.
  11. 01c,26may92,rrr  the tree shuffle
  12. 01b,10jan92,kdl  added modification history; general cleanup.
  13. 01a,15aug91,kdl  original version, from Motorola FPSP v2.0.
  14. */
  15. /*
  16. DESCRIPTION
  17. x_bsunsa 3.2 4/26/91
  18. fpsp_bsun --- FPSP handler for branch/set on unordered exception
  19. Copy the PC to fpi to maintain 881/882 compatability
  20. The __x_real_bsun handler will need to perform further corrective
  21. measures as outlined in the 040 User's Manual on pages
  22. 9-41f, section 9.8.3.
  23. Copyright (C) Motorola, Inc. 1990
  24. All Rights Reserved
  25. THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA
  26. The copyright notice above does not evidence any
  27. actual or intended publication of such source code.
  28. X_BSUN idnt    2,1 Motorola 040 Floating Point Software Package
  29. section 8
  30. NOMANUAL
  31. */
  32. #include "fpsp040E.h"
  33. | xref __x_real_bsun
  34. | xref __x_check_force
  35. .text
  36. .globl __x_fpsp_bsun
  37. __x_fpsp_bsun:
  38. |
  39. link a6,#-LOCAL_SIZE
  40. fsave a7@-
  41. moveml d0-d1/a0-a1,a6@(USER_DA)
  42. fmovemx fp0-fp3,a6@(USER_FP0)
  43. fmoveml fpcr/fpsr/fpi,a6@(USER_FPCR)
  44. | At this point we need to look at the instructions and see if it is one of
  45. | the force-precision ones (fsadd,fdadd,fssub,fdsub,fsmul,fdmul,fsdiv,fddiv,
  46. | fssqrt,fdsqrt,fsmove,fdmove,fsabs,fdabs,fsneg,fdneg).  If it is then
  47. | correct the USER_FPCR to the instruction rounding precision (s or d).
  48. | Also, we need to check if the instruction is fsgldiv or fsglmul.  If it
  49. | is then the USER_FPCR is set to extended rounding precision.  Otherwise
  50. | leave the USER_FPCR alone.
  51. | bsrl __x_check_force
  52. |
  53. movel a6@(EXC_PC),a6@(USER_fpi)
  54. |
  55. moveml a6@(USER_DA),d0-d1/a0-a1
  56. fmovemx a6@(USER_FP0),fp0-fp3
  57. fmoveml a6@(USER_FPCR),fpcr/fpsr/fpi
  58. frestore a7@+
  59. unlk a6
  60. jra  __x_real_bsun
  61. |
  62. | end