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

VxWorks

开发平台:

C/C++

  1. /* vsam.h - SBE VSAM Chip Set header */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,22sep92,rrr  added support for c++
  7. 01d,26may92,rrr  the tree shuffle
  8. 01c,04oct91,rrr  passed through the ansification filter
  9.   -changed ASMLANGUAGE to _ASMLANGUAGE
  10.   -changed copyright notice
  11. 01b,05oct90,shl  added copyright notice.
  12.                  made #endif ANSI style.
  13. 01a,10sep89,rld  original SBE release.
  14. */
  15. /*
  16. This header file defines the register layout of the SBE VMEbus
  17. Slave Address Manager chip (VSAM) and supplies alpha-numeric
  18. equivalences for register bit definitions.
  19. */
  20. #ifndef __INCvsamh
  21. #define __INCvsamh
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #ifdef _ASMLANGUAGE
  26. #define VSAM_ADRS(reg)  (VSAM + (reg * VSAM_REG_OFFSET))
  27. #else
  28. #define VSAM_ADRS(reg)  ((char *) VSAM + (reg * VSAM_REG_OFFSET))
  29. #endif /* _ASMLANGUAGE */
  30. /* Location Monitor */
  31. #define VSAM_LM_VAC_0 VSAM_ADRS(0x00) /* VME Address Register 0 */
  32. #define VSAM_LM_VAC_1 VSAM_ADRS(0x01) /* VME Address Register 1 */
  33. #define VSAM_LM_VAC_2 VSAM_ADRS(0x02) /* VME Address Register 2 */
  34. #define VSAM_LM_VAC_3 VSAM_ADRS(0x03) /* VME Address Register 3 */
  35. #define VSAM_LM_BLKS_UPR VSAM_ADRS(0x04) /* VME Block Size */
  36. #define VSAM_LM_BLKS_LWR VSAM_ADRS(0x05) /* VME Block Size */
  37. #define LM_BLK_2 0x0000   /* 2 byte size */
  38. #define LM_BLK_4 0x0002   /* 4 byte size */
  39. #define LM_BLK_8 0x0006   /* 8 byte size */
  40. #define LM_BLK_16 0x000e   /* 16 byte size */
  41. #define LM_BLK_32 0x001e /* 32 byte size */
  42. #define LM_BLK_64 0x003e /* 64 byte size */
  43. #define LM_BLK_128 0x007e /* 128 byte size */
  44. #define LM_BLK_256 0x00fe   /* 256 byte size */
  45. #define LM_BLK_512 0x01fe   /* 512 byte size */
  46. #define LM_BLK_1K 0x03fe   /* 1K byte size */
  47. #define LM_BLK_2K 0x07fe   /* 2K byte size */
  48. #define LM_BLK_4K 0x0ffe /* 4K byte size */
  49. #define LM_BLK_8K 0x1ffe   /* 8K byte size */
  50. #define LM_BLK_16K 0x3ffe /* 16K byte size */
  51. #define LM_BLK_32K 0x7ffe   /* 32K byte size */
  52. #define LM_BLK_64K 0xfffe   /* 64K byte size */
  53. #define VSAM_LM_AMU0 VSAM_ADRS(0x06) /* User Defined VME AM code #1 */
  54. #define VSAM_LM_AMU1 VSAM_ADRS(0x07) /* User Defined VME AM code #2 */
  55. #define VSAM_LM_CTR VSAM_ADRS(0x08) /* Counter */
  56. #define VSAM_LM_MC VSAM_ADRS(0x0a) /* Match count */
  57. #define VSAM_LM_CMD VSAM_ADRS(0x0c) /* Location Monitor Command */
  58. #define LM_CMD_FLAG 0x08 /* Command Flag */
  59. #define LM_CMD_DISABLE 0x0b /* cmd: disable Loc Monitor */
  60. #define LM_CMD_ENABLE 0x0c /* cmd: enable Loc Monitor */
  61. #define LM_CMD_READ_CNTR 0x0e /* cmd: read Monitor counter */
  62. #define LM_CMD_WRITE_CNTR 0x0f /* cmd: write Monitor counter */
  63. #define VSAM_LM_CTL VSAM_ADRS(0x0d) /* Location Monitor Control */
  64. #define LM_AMU0_ENABLE 0x04 /* Enable AMU0 usage */
  65. #define LM_AMU1_ENABLE 0x08 /* Enable AMU1 usage */
  66. #define LM_MODE_NONE 0x00 /* No address monitoring */
  67. #define LM_MODE_A16 0x01 /* Select A16 monitoring */
  68. #define LM_MODE_A24 0x02 /* Select A24 monitoring */
  69. #define LM_MODE_A32 0x03 /* Select A32 monitoring */
  70. #define VSAM_LM_VSL_UPR VSAM_ADRS(0x0e) /* VME Status Latch */
  71. #define LM_VSL_UAT 0x80 /* Decoded UAT transfer */
  72. #define LM_VSL_WORD 0x40 /* Decoded Word transfer */
  73. #define LM_VSL_BYTE 0x20 /* Decoded Byte transfer */
  74. #define LM_VSL_WRITE 0x10 /* Latched VWRITE* signal */
  75. #define LM_VSL_LDS1 0x08 /* Latched VDS1* signal */
  76. #define LM_VSL_LDS0 0x04 /* Latched VDS0* signal */
  77. #define LM_VSL_LA01 0x02 /* Latched VA1 signal */
  78. #define LM_VSL_LLWORD 0x01 /* Latched VLWORD* signal */
  79. #define VSAM_LM_VSL_LWR VSAM_ADRS(0x0f) /* VME Status Latch */
  80. #define LM_VSL_LIACK 0x80 /* Latched VIACK* signal */
  81. #define LM_VSL_AMASK 0x3f /* Mask for AM codes */
  82. #define VSAM_LM_AMR VSAM_ADRS(0x10) /* Regular VME AM codes */
  83. #define LM_AM_SUPER 0x38 /* Respond to supervisor */
  84. #define LM_AM_NONPRIV 0x07 /* Respond to non-privilege */
  85. #define LM_AM_SUP_ASCENDING 0x20 /* AMF */
  86. #define LM_AM_SUP_PGM 0x10 /* AME */
  87. #define LM_AM_SUP_DATA 0x08 /* AMD */
  88. #define LM_AM_USR_ASCENDING 0x04 /* AMB */
  89. #define LM_AM_USR_PGM 0x02 /* AMA */
  90. #define LM_AM_USR_DATA 0x01 /* AM9 */
  91. #define VSAM_LM_VEC VSAM_ADRS(0x11) /* Interrupt Vector */
  92. /* Shared Memory */
  93. #define VSAM_SM_BAV_UPR VSAM_ADRS(0x12) /* Base Addr on VMEbus */
  94. #define VSAM_SM_BAV_LWR VSAM_ADRS(0x13) /* Base Addr on VMEbus */
  95. #define VSAM_SM_BLKS VSAM_ADRS(0x14) /* Block Size */
  96. #define SM_BLK_64K 0x00 /* 64K byte size */
  97. #define SM_BLK_128K 0x01 /* 128K byte size */
  98. #define SM_BLK_256K 0x03 /* 256K byte size */
  99. #define SM_BLK_512K 0x07 /* 512K byte size */
  100. #define SM_BLK_1MB 0x0f /* 1MB byte size */
  101. #define SM_BLK_2MB 0x1f /* 2MB byte size */
  102. #define SM_BLK_4MB 0x3f /* 4MB byte size */
  103. #define SM_BLK_8MB 0x7f /* 8MB byte size */
  104. #define VSAM_SM_BAL VSAM_ADRS(0x15) /* Base Addr on Local Bus */
  105. #define VSAM_SM_AM VSAM_ADRS(0x16) /* AM codes */
  106. #define SM_AM_A32 0x80 /* 32-bit address response */
  107. #define SM_AM_A24 0x00 /* 24-bit address response */
  108. #define SM_AM_SUPER 0x38 /* Respond to supervisor */
  109. #define SM_AM_NONPRIV 0x07 /* Respond to non-privilege */
  110. #define SM_AM_SUP_ASCENDING 0x20 /* AMF */
  111. #define SM_AM_SUP_PGM 0x10 /* AME */
  112. #define SM_AM_SUP_DATA 0x08 /* AMD */
  113. #define SM_AM_USR_ASCENDING 0x04 /* AMB */
  114. #define SM_AM_USR_PGM 0x02 /* AMA */
  115. #define SM_AM_USR_DATA 0x01 /* AM9 */
  116. #define VSAM_IO_BAV_UPR VSAM_ADRS(0x18) /* Short I/O Base Address */
  117. #define VSAM_IO_BAV_LWR VSAM_ADRS(0x19) /* Short I/O Base Address */
  118. #define VSAM_IO_AM VSAM_ADRS(0x1a) /* Short I/O AM codes */
  119. #define EN_29 0x01 /* Short supervisory AM */
  120. #define EN_2D 0x02 /* Short non-priv AM */
  121. #define EN_MBX 0x04 /* Assertion of mailbox int */
  122. /* Mailbox and Status Functions */
  123. #define VSAM_MBX_VEC VSAM_ADRS(0x1b) /* Mailbox Intr Vector */
  124. #define VSAM_MBX_ISR VSAM_ADRS(0x1c) /* Interrupt Status Register */
  125. #define MBXP 0x80 /* Mailbox intr is pending */
  126. #define LMQP 0x40 /* Loc Monitor intr is pending */
  127. #define MBXEN 0x08 /* Mailbox intr is enabled */
  128. #define LMQEN 0x04 /* Loc Monitor is enabled */
  129. #define VSAM_MBX_USER VSAM_ADRS(0x1d) /* User Defined Register */
  130. #define MBX_RESET 0xa5 /* VMEbus resets local board */
  131. #define VSAM_MAILBOX_UPR VSAM_ADRS(0x1e)/* Mailbox Register */
  132. #define VSAM_MAILBOX_LWR VSAM_ADRS(0x1f)/* Mailbox Write Code Register */
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136. #endif /* __INCvsamh */