fppSimhppaLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* fppSimhppaLib.h - simhppa floating-point header */
  2. /* Copyright 1996 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02b,25oct96,mem  fixed FP_DATA definition.
  7. 02a,14jan96,kab  created from fppSimsparcLib.h w/ hp mods.
  8. 01c,22sep95,ms   added dummyQueuePtr field to FP_CONTEXT (SPR #4796).
  9. 01b,30jul93,gae  fixed fpContext to have double regs.
  10. 01a,05jun93,rrr  derived.
  11. */
  12. #ifndef __INCfppSimhppaLibh
  13. #define __INCfppSimhppaLibh
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #include "vxWorks.h"
  18. #define  FP_NUM_DREGS    28              /* Floating-Point Data Registers */
  19. /* equates for fppState, fpstate */
  20. #define UNKNOWN          0x00           /* default */
  21. #define FPU_TESTED       0x01           /* set by fppProbe */
  22. #define FPU_TESTED_TRUE  0x02           /* set by fppProbe */
  23. #define FPU_TESTED_FALSE 0x00           /* set by fppProbe */
  24. #define FPU_AVAILABLE    (FPU_TESTED + FPU_TESTED_TRUE)
  25. #define NO_FPU_AVAILABLE (FPU_TESTED + FPU_TESTED_FALSE)
  26. #ifndef _ASMLANGUAGE
  27. typedef struct fpContext                /* Floating-Point Context */
  28.     {
  29.     union
  30. {
  31.         unsigned int  fps[8];   /* status reg; exception regs; 
  32.    undefined if read/written as ints */
  33. double        fpd[4];   /* ditto; */
  34. } fpe;
  35.     double fr[FP_NUM_DREGS]; /* Data Registers */
  36.     } FP_CONTEXT;
  37. #define FPREG_SET FP_CONTEXT
  38. /* variable declarations */
  39. extern REG_INDEX fpRegName[]; /* f-point data register table */
  40. extern REG_INDEX fpCtlRegName[]; /* f-point control register table */
  41. extern WIND_TCB *pFppTaskIdPrevious; /* task id for deferred exceptions */
  42. extern FUNCPTR  fppCreateHookRtn; /* arch dependent create hook routine */
  43. extern FUNCPTR  fppDisplayHookRtn; /* arch dependent display routine */
  44. /* function declarations */
  45. #if defined(__STDC__) || defined(__cplusplus)
  46. extern void fppArchInit (void);
  47. extern void fppArchTaskCreateInit (FP_CONTEXT *pFpContext);
  48. #else
  49. extern void fppArchInit ();
  50. extern void fppArchTaskCreateInit ();
  51. #endif /* __STDC__ */
  52. #endif /* _ASMLANGUAGE */
  53. #define FSR_OFFSET(n)   (4*(n))           /* status & exception regs */
  54. #define FP_DATA         FSR_OFFSET(8)     /* Data Registers */
  55. #define FPD_OFFSET(n)   (FP_DATA + (8 * (n)))
  56. #define FPREG_SET_SIZE  (32*8)            /* used in fppALib.s */
  57. #define fpsr   fpe.fps[0]          /* status reg */
  58. #define fpe0   fpe.fps[1]          /* exception reg */
  59. #define fpe1   fpe.fps[2]          /* exception reg */
  60. #define fpe2   fpe.fps[3]          /* exception reg */
  61. #define fpe3   fpe.fps[4]          /* exception reg */
  62. #define fpe4   fpe.fps[5]          /* exception reg */
  63. #define fpe5   fpe.fps[6]          /* exception reg */
  64. #define fpe6   fpe.fps[7]          /* exception reg */
  65. #ifdef __cplusplus
  66. }
  67. #endif
  68. #endif /* __INCfppSimsparcLibh */