00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _vme_h_
00029 #define _vme_h_
00030 #include "vxWorks.h"
00031 #include "vme.h"
00032 #endif
00033
00034 #define A32D24 0xf0000000
00035
00036
00037
00038 #define VME_ENABLE_1190(_vmebase){\
00039 {\
00040 DWORD _ll, _local;\
00041 _ll = _vmebase;\
00042 _local = ((_ll) | 0x8002) | A32D24;\
00043 *(WORD *)_local = 0x1;\
00044 }\
00045 }
00046
00047 #define VME_DISABLE_1190(_vmebase){\
00048 {\
00049 DWORD _ll, _local;\
00050 _ll = _vmebase;\
00051 _local = ((_ll) | 0x8002) | A32D24;\
00052 *(WORD *)_local = 0x0;\
00053 }\
00054 }
00055
00056 #define VME_RESET_1190(_vmebase){\
00057 {\
00058 static DWORD _ll, _dummy, _local;\
00059 _ll = _vmebase;\
00060 _local = (_ll) | A32D24;\
00061 _dummy = *(WORD *) _local;\
00062 }\
00063 }
00064
00065 #define VME_COUNT_1190(_vmebase, _d){\
00066 {\
00067 DWORD _ll, *_pcount;\
00068 _ll = _vmebase;\
00069 _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00070 *((WORD *) _d) = *(WORD *) _pcount;\
00071 }\
00072 }
00073
00074
00075 #define VME_READI4_1190(_vmebase,_d,_r){\
00076 {\
00077 DWORD _ll, *_local, __r, _count;\
00078 DWORD *_pcount;\
00079 __r = _r;\
00080 _ll = _vmebase;\
00081 _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00082 _count = *(WORD *) _pcount;\
00083 if (_count <= __r)\
00084 __r = _count;\
00085 _local = (DWORD *)((_ll) | A32D24);\
00086 while (__r > 0) {\
00087 *_d++ = *_local++;\
00088 __r--;}\
00089 }\
00090 }
00091
00092 #define VME_READL2_1190(_vmebase,_d,_r){\
00093 {\
00094 DWORD _ll, *_pcount, *_local;\
00095 WORD _count, __r;\
00096 __r = _r;\
00097 _ll = _vmebase;\
00098 _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00099 _count = *(WORD *) _pcount;\
00100 if (_count <= __r)\
00101 __r = _count;\
00102 _local = (DWORD *)((_ll) | A32D24);\
00103 while (__r > 0) {\
00104 *(WORD *) _d = *(WORD *)_local;\
00105 ((WORD *)_d)++;\
00106 (_local)++;\
00107 __r--;}\
00108 }\
00109 }
00110
00111 #define VME_READH2_1190(_vmebase,_d,_r){\
00112 {\
00113 DWORD _ll, *_pcount, *_local;\
00114 WORD _count, __r;\
00115 __r = _r;\
00116 _ll = _vmebase;\
00117 _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00118 _count = *(WORD *) _pcount;\
00119 if (_count <= __r)\
00120 __r = _count;\
00121 _local = (DWORD *)((_ll) | A32D24);\
00122 while (__r > 0) {\
00123 *(WORD *) _d = *(++((WORD *)_local));\
00124 ((WORD *)_d)++;\
00125 ((WORD *)_local)++;\
00126 __r--;}\
00127 }\
00128 }
00129
00130 #define VME_READL2_TONY_1190(_vmebase,_d,_r){\
00131 {\
00132 DWORD _ll, *_pcount, *_local, __r, _count;\
00133 __r = _r;\
00134 _ll = _vmebase;\
00135 _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24);\
00136 _count = *(WORD *) _pcount;\
00137 if (_count <= __r)\
00138 __r = _count;\
00139 _local = (DWORD *)((_ll) | A32D24);\
00140 *(WORD *) _d = __r;\
00141 ((WORD *)_d)++;\
00142 while (__r > 0) {\
00143 *(WORD *) _d = *(WORD *)_local;\
00144 ((WORD *)_d)++;\
00145 (_local)++;\
00146 __r--;}\
00147 }\
00148 }
00149