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

VxWorks

开发平台:

C/C++

  1. /* if_egl.h - Interphase Eagle 4207 Ethernet driver header */
  2. /*
  3. modification history
  4. --------------------
  5. 02c,22sep92,rrr  added support for c++
  6. 02b,26may92,rrr  the tree shuffle
  7. 02a,27dec91,gae  cleanup, removal of bitfields, structure simplification.
  8. 01b,04oct91,rrr  passed through the ansification filter
  9.   -fixed missing ;
  10.   -fixed #else and #endif
  11.   -changed TINY and UTINY to INT8 and UINT8
  12.   -changed copyright notice
  13. 01a,27nov90,ajm  adapted from MIPS 4.3 driver.
  14. */
  15. /*
  16.  * if_egl.h : V/Ethernet 4207 EAGLE.
  17.  * Created  : 11/17/87 by Interphase Corp.
  18.  * Author   : Manlio D. Marquez
  19.  */
  20. #ifndef __INCif_eglh
  21. #define __INCif_eglh
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #define S_SHORTIO 2048 /* total short i/o space */
  26. #define S_HUS 1812 /* total host usable space */
  27. #define N_SCRTCH 24
  28. #define S_SCRTCH (sizeof(USHORT)*N_SCRTCH)
  29. #define MAX_CQE (S_HUS - sizeof(IOPB) - S_SCRTCH) / 
  30.     (sizeof (CQE) + sizeof(IOPB))
  31. #define MAX_IOPB MAX_CQE
  32. #define O_MCE_IOPB (sizeof(MCSB)+sizeof(CQE)+ 
  33.     (sizeof(CQE)+sizeof(IOPB))*MAX_CQE)
  34. /* offset of MCE_IOPB */
  35. /* Master Control Status Block (MCSB) */
  36. /* Master Status Register
  37.     pad:13 reserved bits
  38.     QFC:1  Queue Flush Complete
  39.     BOK:1  Board OK
  40.     CNA:1  Controller Not Available
  41. */
  42. #define M_MSR_QFC 0x0004
  43. #define M_MSR_BOK 0x0002
  44. #define M_MSR_CNA 0x0001
  45. /* Master Control Register
  46.     pad:2  reserved bits
  47.     SFEN:1 Sysfail Enable
  48.     RES:1  Reset controller
  49.     FLQ:1  Flush Queue
  50.     pad:8  reserved bits
  51.     FLQR:1 Flush Queue and Report
  52.     pad:1  reserved bits
  53.     SQM:1  Start Queue Mode
  54. */
  55. #define M_MCR_SFEN 0x2000
  56. #define M_MCR_RES 0x1000
  57. #define M_MCR_FLQ 0x0800
  58. #define M_MCR_FLQR 0x0004
  59. #define M_MCR_SQM 0x0001
  60. /* Interrupt on Queue Available Register
  61.     IQEA:1 Intr on Queue entry Available
  62.     IQEH:1 Intr on Queue Half Empty Enable
  63.     pad:3  Reserved bits
  64.     ILVL:3 Intr Level on Queue Available
  65.     IVCT:8 Intr Vector on Queue Available
  66. */
  67. #define M_IQAR_IQEA 0x8000
  68. #define M_IQAR_IQEH 0x4000
  69. #define M_IQAR_ILVL 0x0700
  70. #define M_IQAR_IVCT 0x00FF
  71. typedef struct { /* Master control/Status Block */
  72.     USHORT mcsb_MSR; /* Master status register */
  73.     USHORT mcsb_RES0; /* Reserved word 0 */
  74.     USHORT mcsb_MCR; /* Master Control register */
  75.     USHORT mcsb_IQAR; /* Interrupt on Queue Available Reg */
  76.     USHORT mcsb_QHDP; /* Queue head pointer */
  77.     USHORT mcsb_RES1; /* Reserved word 1 */
  78.     USHORT mcsb_RES2; /* Reserved word 2 */
  79.     USHORT mcsb_RES3; /* Reserved word 3 */
  80. } MCSB;
  81. /* Interface Specific Mode Physical Interface Mode
  82.     PRM:1   Promiscuous Mode
  83.     INL:1   Internal Loopback
  84.     DRY:1   Disable Retry
  85.     COL:1   Force Collision
  86.     DTC:1   Disable Transmit CRC
  87.     LP:1    Loopback
  88.     DTX:1   Disable Transmit
  89.     DRX:1   Disable Receive
  90.     pad:4   Reserved
  91.     PX25:1  X.25 (not supported)
  92.     PSTR:1  Starlan (not supported)
  93.     PIEEE:1 IEEE 802.3
  94.     PE:1    Ethernet
  95. */
  96. #define M_IMOD_PRM 0x8000
  97. #define M_IMOD_INL 0x4000
  98. #define M_IMOD_DRY 0x2000
  99. #define M_IMOD_COL 0x1000
  100. #define M_IMOD_DTC 0x0800
  101. #define M_IMOD_LP 0x0400
  102. #define M_IMOD_DTX 0x0200
  103. #define M_IMOD_DRX 0x0100
  104. #define M_IMOD_PX 0x0008
  105. #define M_IMOD_PS 0x0004
  106. #define M_IMOD_PIEEE 0x0002
  107. #define M_IMOD_PE 0x0001
  108. /* Vector structure
  109.     pad:5 Reserved bits
  110.     ILVL:3 Interrupt Level
  111.     IVCT:8 Interrupt Vector
  112. */
  113. #define M_VECT_ILVL 0x0700
  114. #define M_VECT_IVCT 0x00FF
  115. #define LVL_VCT(l,v) ((((l) << 8) & M_VECT_ILVL) | ((v) & M_VECT_IVCT))
  116. typedef struct { /* Controller Initialization Block */
  117.     UINT8 cib_RES0; /* Reserved byte 0 */
  118.     UINT8 cib_NCQE; /* Number of Command Queue Entries */
  119.     USHORT  cib_IMOD; /* Interface Modes */
  120.     UINT8 cib_NTXR; /* Num LANCE Tx Rings */
  121.     UINT8 cib_NRXR; /* Num LANCE Rx Rings */
  122.     UINT8 cib_PHY[6]; /* Ethernet Physical Address */
  123.     UINT8 cib_FILT[8]; /* Ethernet Logical Address Filter */
  124.     USHORT cib_RXSIZ; /* Rx Buffer Size / Length */
  125.     USHORT cib_NRBUF; /* Number of Rx buffers  */
  126.     USHORT cib_TXSIZ; /* Tx Buffer Size / Length */
  127.     USHORT cib_NIBUF; /* Number of Internal Tx Buffers */
  128.     USHORT cib_NHBUF; /* Number of Host Managed Tx Buffers */
  129.     USHORT cib_NVECT; /* Normal Completion Vector */
  130.     USHORT cib_EVECT; /* Error Completion Vector */
  131.     USHORT  cib_BURST; /* DMA Burst count */
  132.     USHORT cib_RES1[4]; /* Reserved words */
  133. } CIB;
  134. /* Work queue Status
  135.     IACT:1  Initialized Active
  136.     INACT:1 Initialized Inactive
  137.     pad:14  Reserved Bits
  138. */
  139. #define M_WQS_IACT 0x8000
  140. #define M_WQS_INACT 0x4000
  141. typedef struct { /* Work Queue Information Block */
  142. USHORT wqib_WQS; /* Work Queue Status */
  143. ULONG wqib_MAXENT; /* Work Queue Max Entries */
  144. ULONG wqib_CURENT; /* Work Queue Current Entries */
  145. USHORT wqib_REF; /* Work Queue Reference Number */
  146. USHORT wqib_PRIO; /* Work Queue Priority */
  147. USHORT wqib_WDIV; /* Work Queue Work division */
  148. } WQIB;
  149. /* Command Queue Entry (CQE) */
  150. /* Queue Entry Control Register
  151.     pad:13 Reserved bits
  152.     HPC:1  High Priority Command
  153.     AA:1   Abort Acknowledge
  154.     GO:1   Go/Busy
  155. */
  156. #define M_QECR_HPC 0x0004
  157. #define M_QECR_AA 0x0002
  158. #define M_QECR_GO 0x0001
  159. typedef struct { /* Command Queue Entry */
  160.     USHORT cqe_QECR; /* Queue Entry Control Register */
  161.     USHORT cqe_IOPB_ADDR; /* IOPB Address */
  162.     ULONG cqe_CTAG; /* Command Tag */
  163.     UINT8 cqe_RES0; /* Reserved */
  164.     UINT8 cqe_WORK_QUEUE; /* Work Queue Number */
  165.     USHORT cqe_RES1; /* Reserved word */
  166. } CQE;
  167. /* Command Response Block (CRB) */
  168. /* CRSW Command Response Status Word
  169.     pad:9  Reserved bits
  170.     QEA:1  Queue Entry Available
  171.     QMS:1  Queue Mode Started
  172.     AQ:1   Abort Queue
  173.     EX:1   Exception
  174.     ER:1   Error
  175.     CC:1   Command Complete
  176.     CRBV:1 Command Response Block Valid/Clear
  177. */
  178. #define M_CRSW_QEA 0x0040
  179. #define M_CRSW_QMS 0x0020
  180. #define M_CRSW_AQ 0x0010
  181. #define M_CRSW_EX 0x0008
  182. #define M_CRSW_ER 0x0004
  183. #define M_CRSW_CC 0x0002
  184. #define M_CRSW_CRBV 0x0001
  185. typedef struct { /* Command Response Block */
  186.     USHORT crb_CRSW; /* Command Response Status Word */
  187.     USHORT crb_RES0; /* Reserved word */
  188.     ULONG crb_CTAG; /* Command Tag */
  189.     UINT8 crb_RES1; /* Reserved byte */
  190.     UINT8 crb_WORK_QUEUE; /* Work Queue Number */
  191.     USHORT crb_RES2; /* Reserved word */
  192. } CRB;
  193. /* Configuration Status Block (CSTB) */
  194. typedef struct { /* Configuration Status Block 72 bytes */
  195.     UINT8 cstb_RES0; /* Reserved byte */
  196.     UINT8 cstb_PCODE[3]; /* Product Code */
  197.     UINT8 cstb_RES1; /* Reserved byte */
  198.     UINT8 cstb_PVAR; /* Product Variation */
  199.     UINT8 cstb_RES2; /* Reserved byte */
  200.     UINT8 cstb_FREV[3]; /* Firmware Revision level */
  201.     UINT8 cstb_FDATE[8]; /* Firmware Release date */
  202.     UINT8 cstb_RES3; /* Reserved word */
  203.     UINT8 cstb_SREV[3]; /* Software Revision Level */
  204.     UINT8 cstb_SDATE[8]; /* Software Release Date */
  205.     USHORT cstb_BSIZE; /* Buffer size in Kbytes */
  206.     ULONG cstb_HUSO; /* Host Usable Space Offset */
  207.     ULONG cstb_RBPO;  /* Internal Transmit Buffer Offset */
  208.     ULONG cstb_HMTBO; /* Host Transmit Buffer Offset */
  209.     ULONG cstb_HUBO; /* Host Usable Buffer Memory Offset */
  210.     UINT8 cstb_PHY[6]; /* Current Physical Node Address */
  211.     UINT8 cstb_FILT[8]; /* Current Logical Address Filter */
  212.     UINT8 cstb_RES4[10]; /* Reserved */
  213. } CSTB;
  214. /* Controller Statistics Block (CSB) */
  215. typedef struct { /* Controller Statistics Block */
  216. #define csb_TXATT csb_stat[0] /* Number of tx attempts */
  217. #define csb_TXDMACMP csb_stat[1] /* Number of tx DMA completions */
  218. #define csb_LTXINTS csb_stat[2] /* Number of LANCE tx ints */
  219. #define csb_LGDTXS csb_stat[3] /* Number of good LANCE tx */
  220. #define csb_TXERRS csb_stat[4] /* Number of LANCE tx errors */
  221. #define csb_TXDONES csb_stat[5] /* Number of LANCE tx dones */
  222. #define csb_RXATMPS csb_stat[6] /* Number of LANCE rx attempts */
  223. #define csb_RXSTARVE csb_stat[7] /* Number of LANCE rx starvations */
  224. #define csb_RXLINTS csb_stat[8] /* Number of LANCE rx interrupts */
  225. #define csb_RXGOOD csb_stat[9] /* Number of good LANCE rx */
  226. #define csb_RXERROR csb_stat[10] /* Number of LANCE rx errors */
  227. #define csb_RXDMACMP csb_stat[11] /* Number of LANCE rx DMA completions */
  228. #define csb_RXDONE csb_stat[12] /* Number of LANCE rx done */
  229. #define csb_MISCDMA csb_stat[13] /* Number of miscellaneous DMA ints */
  230. #define csb_TOTLINTS csb_stat[14] /* total LANCE interrupts */
  231. #define csb_CSR0INIT csb_stat[15] /* init done for LANCE */
  232. #define csb_CSR0BABB csb_stat[16] /* csr0 babble packets */
  233. #define csb_CSR0CERR csb_stat[17] /* csr0 collisions */
  234. #define csb_CSR0MISS csb_stat[18] /* csr0 Miss */
  235. #define csb_CSR0MEM csb_stat[19] /* csr0 Memory errors */
  236.     ULONG csb_stat [20];
  237. } CSB;
  238. /* IOPB Format (IOPB) */
  239. /* IOPB Option word
  240.     pad:6 Reserved bits
  241.     DATA:1 Transmit - pointer to data only
  242.     BABL:1 Transmit - ignore babble errors
  243.     pad:5 Reserved bits
  244.     DMA:1 DMA Enable
  245.     SG:1 Scatter/Gather bit
  246.     IE:1 Interrupt Enable
  247. */
  248. #define M_OPT_DATA 0x0200
  249. #define M_OPT_BABL 0x0100
  250. #define M_OPT_DMA 0x0004
  251. #define M_OPT_SG 0x0002
  252. #define M_OPT_IE 0x0001
  253. /* VME bus transfer options
  254.     pad:3   Reserved bits
  255.     DIR:1   Direction
  256.     TRANS:2 Transfer Type
  257.     MEMT:2  Memory Type
  258.     pad:2   Reserved bits
  259.     ADRM:6  Address modifier
  260. */
  261. #define M_TOPT_DIR 0x1000
  262. #define M_TOPT_TRANS 0x0C00
  263. #define M_TOPT_MEMT 0x0300
  264. #define M_TOPT_MOD 0x003F
  265. typedef struct { /* Transmit / Receive IOPB */
  266.     USHORT iopb_CMD; /* IOPB Command code 0x50 / 0x60 */
  267.     USHORT iopb_OPTION; /* IOPB Option word */
  268.     USHORT iopb_STATUS; /* IOPB Return Status word */
  269.     USHORT iopb_NVCT; /* IOPB Normal completion Vector */
  270.     USHORT iopb_EVCT; /* IOPB Error completion Vector */
  271.     USHORT iopb_TOPT; /* IOPB VME bus transfer options */
  272.     ULONG iopb_BUFF; /* IOPB Buffer Address */
  273.     ULONG iopb_LENGTH; /* IOPB Max-Transfer Length */
  274.     USHORT iopb_HBUF; /* IOPB Host Managed Buffer Number */
  275.     USHORT iopb_PTLF; /* IOPB Packet Type / Length Field */
  276.     UINT8 iopb_NODE[6]; /* IOPB Node Address */
  277.     USHORT iopb_SGEC; /* IOPB Scatter / Gather Element Count */
  278.     USHORT iopb_LAN1; /* IOPB LANCE Descriptor Word 1 */
  279.     USHORT iopb_LAN3; /* IOPB LANCE Descriptor Word 3 */
  280. } IOPB;
  281. typedef struct { /* DMA IOPB */
  282.     USHORT iopb_CMD; /* IOPB Command code 0x70 */
  283.     USHORT iopb_OPTION; /* IOPB Option word */
  284.     USHORT iopb_STATUS; /* IOPB Return Status word */
  285.     USHORT iopb_NVCT; /* IOPB Normal completion Vector */
  286.     USHORT iopb_EVCT; /* IOPB Error completion Vector */
  287.     USHORT iopb_BUFF_HI; /* IOPB Error completion Vector */
  288.     USHORT iopb_BUFF_LO; /* IOPB VME Buffer Address */
  289.     USHORT iopb_IBUFF_HI; /* IOPB Host Managed Buffer Address */
  290.     USHORT iopb_IBUFF_LO; /* IOPB Host Managed Buffer Address */
  291.     USHORT iopb_LENGTH_HI; /* IOPB Transfer Length */
  292.     USHORT iopb_LENGTH_LO; /* IOPB Transfer Length */
  293.     USHORT iopb_TOPT; /* IOPB VME bus transfer options */
  294. } DMA_IOPB;
  295. typedef struct { /* Initialize Controller IOPB */
  296.     USHORT ic_iopb_CMD; /* IOPB Command code 0x41 */
  297.     USHORT ic_iopb_OPTION; /* IOPB Option word */
  298.     USHORT ic_iopb_STATUS; /* IOPB Return Status word */
  299.     USHORT ic_iopb_NVCT; /* IOPB Normal completion Vector */
  300.     USHORT ic_iopb_EVCT; /* IOPB Error completion Vector */
  301.     USHORT ic_iopb_RES0; /* IOPB Reserved word */
  302.     ULONG ic_iopb_BUFF; /* IOPB Buffer Address */
  303.     ULONG ic_iopb_RES1[5]; /* IOPB Reserved words */
  304. } IC_IOPB;
  305. typedef struct { /* Change Node Address IOPB */
  306.     USHORT cn_iopb_CMD; /* IOPB Command code 0x45 */
  307.     USHORT cn_iopb_OPTION; /* IOPB Option word */
  308.     USHORT cn_iopb_STATUS; /* IOPB Return Status word */
  309.     USHORT cn_iopb_NVCT; /* IOPB Normal completion Vector */
  310.     USHORT cn_iopb_EVCT; /* IOPB Error completion Vector */
  311.     USHORT cn_iopb_RES0[5]; /* IOPB Reserved word  */
  312.     UINT8 cn_iopb_PHY[6]; /* IOPB New Node Address */
  313.     USHORT cn_iopb_RES1[5]; /* IOPB Reserved words  */
  314. } CN_IOPB;
  315. typedef struct { /* Change Address Filter IOPB  */
  316.     USHORT cf_iopb_CMD; /* IOPB Command code 0x46 */
  317.     USHORT cf_iopb_OPTION; /* IOPB Option word */
  318.     USHORT cf_iopb_STATUS; /* IOPB Return Status word */
  319.     USHORT cf_iopb_NVCT; /* IOPB Normal completion Vector */
  320.     USHORT cf_iopb_EVCT; /* IOPB Error completion Vector */
  321.     USHORT cf_iopb_RES0[5]; /* IOPB Reserved word */
  322.     UINT8 cf_iopb_FILT[8]; /* IOPB New Logical Address Filter */
  323.     USHORT cf_iopb_RES1[4]; /* IOPB Reserved words */
  324. } CF_IOPB;
  325. /* Initialize Work Queue Command Format (WQCF) */
  326. /* Work Queue Options
  327.     IWQ:1  Initialize Work Queue
  328.     pad:14 Reserved bits
  329.     AE:1   Abort Enable
  330. */
  331. #define M_WOPT_IWQ 0x8000
  332. #define M_WOPT_AE 0x0001
  333. #define EGL_MISCQ 0x00 /* Miscellaneous Work queue */
  334. #define EGL_DMAQ 0x01 /* DMA Work Queue */
  335. #define EGL_RECVQ 0x02 /* Receive Work Queue */
  336. #define EGL_XMTQN(x) ((x) + 0x03) /* Transmit Work Queue N */
  337. typedef struct { /* Initialize Work Queue Command Format */
  338.     USHORT wqcf_CMD; /* Command Normally (0x42) */
  339.     USHORT wqcf_OPTION; /* Command Options */
  340.     USHORT wqcf_STATUS; /* Return Status */
  341.     USHORT wqcf_NVCT; /* Normal Completion Vector */
  342.     USHORT wqcf_EVCT; /* Error Completion Vector */
  343.     USHORT wqcf_RES0[5]; /* Reserved Words */
  344.     USHORT wqcf_WORKQ; /* Work Queue Number */
  345.     USHORT wqcf_WOPT; /* Work Queue Options */
  346.     USHORT wqcf_SLOTS; /* Number of slots in the Work Queues */
  347.     USHORT wqcf_PRIORITY; /* Priority Level */
  348.     USHORT wqcf_WDIV; /* Work Division */
  349.     USHORT wqcf_RES1[3]; /* Reserved words */
  350. } WQCF;
  351. /* Short I/O Format */
  352. typedef struct {
  353.     MCSB sh_MCSB; /* Master Control / Status Block */
  354.     CQE sh_MCE; /* Master Command Entry */
  355.     CQE sh_CQE[MAX_CQE]; /* Command Queue Entry */
  356.     IOPB sh_IOPB[MAX_IOPB]; /* Host IOPB Space */
  357.     IOPB sh_MCE_IOPB; /* Host MCE IOPB Space */
  358.     USHORT sh_SCRTCH[N_SCRTCH]; /* Scratch Area for Parameter IOPBS */
  359.     CRB sh_CRB; /* Command Response Block */
  360.     USHORT sh_FILL[2]; /* filler */
  361.     IOPB sh_RET_IOPB; /* Returned IOPB */
  362.     CSTB sh_CSTB; /* Controller Status Block */
  363.     CSB sh_CSB; /* Controller Statistics Block */
  364.     USHORT sh_PSEM; /* Printf Semaphores  */
  365.     USHORT sh_VMEIV; /* VME bus Interrupt Vector */
  366. } SHIO;
  367. /* Eagle Control IOPB's */
  368. #define CNTR_DIAG 0x40 /* Perform Diagnostics              */
  369. #define CNTR_INIT 0x41 /* Initialize Controller            */
  370. #define CNTR_INIT_WORKQ 0x42 /* Initialize Work Queue            */
  371. #define CNTR_DUMP_INIT 0x43 /* Dump Initialization Parameters   */
  372. #define CNTR_REPORT_STATS 0x44 /* Report Statistics     */
  373. #define CNTR_CHANGE_NODE 0x45 /* Change Default Node Address     */
  374. #define CNTR_CHANGE_FILTER 0x46 /* Change Def. Logical Address Filter*/
  375. #define CNTR_FLUSH_WORKQ 0x49 /* Flush Work Queue                 */
  376. #define CNTR_TRANSMIT 0x50 /* Transmit     */
  377. #define CNTR_RECEIVE 0x60 /* Receive     */
  378. #define CNTR_DMA 0x70 /* DMA             */
  379. /* Memory types */
  380. #define MEMT_16BIT 0x0100 /* 16 Bit Memory type */
  381. #define MEMT_32BIT 0x0200 /* 32 Bit Memory type */
  382. #define MEMT_SHIO  0x0300 /* Short I/O Memory   */
  383. /* Transfer types  */
  384. #define TT_NORMAL 0x0000 /* Normal Mode */
  385. #define TT_BLOCK 0x0400 /* Block  Mode */
  386. #define TT_DISABLE_INC_ADDR 0x0800 /* Disable Incrementing Addresses */
  387. #define DIR_READ 0x1000 /* Read from Eagle */
  388. #define DIR_WRITE 0x0000 /* Write to Eagle  */
  389. /* LANCE error bits */
  390. #define LANCE_RERR 0x4000 /* Receive Error */
  391. #define LAN1_FRAM 0x2000 /* Framing error  */
  392. #define LAN1_OFLO 0x1000 /* Overflow error */
  393. #define LAN1_CRC 0x0800 /* CRC error */
  394. #define LAN1_BUFF 0x0400 /* Buffer error */
  395. #define LANCE_RENP 0x0100 /* End of Packet */
  396. #define LAN1_RBITS "2016OWN15ERR14FRAM13OFLO12CRC11BUFF10STP9ENDP"
  397. #define LANCE_TERR 0x4000 /* Transmit Error */
  398. #define LANCE_TMORE 0x1000 /* More Than One Retry */
  399. #define LANCE_TONE 0x0800 /* Exactly One Retry */
  400. #define LAN3_BUFF 0x8000 /* Transmit Buffer error*/
  401. #define LAN3_UFLO 0x4000 /* Underflow error */
  402. #define LAN3_LCOL 0x1000 /* Late collision */
  403. #define LAN3_LCAR 0x0800 /* Loss of carrier */
  404. #define LAN3_RTRY 0x0400 /* Retry error */
  405. #define LAN1_TBITS "2016OWN15ERR13MORE12ONE11DEF10STP9ENDP"
  406. #define LAN3_TBITS "2016BUFF15UFLO13LCOL12LCAR11RTRY"
  407. #ifdef __cplusplus
  408. }
  409. #endif
  410. #endif /* __INCif_eglh */