mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
6.9 KiB
195 lines
6.9 KiB
/**************************************************************************\
|
|
|
|
$Header: o:\src/RCS/MGAI.H 1.2 95/07/07 06:16:09 jyharbec Exp $
|
|
|
|
$Log: MGAI.H $
|
|
* Revision 1.2 95/07/07 06:16:09 jyharbec
|
|
* *** empty log message ***
|
|
*
|
|
* Revision 1.1 95/05/02 05:16:25 jyharbec
|
|
* Initial revision
|
|
*
|
|
|
|
\**************************************************************************/
|
|
|
|
/*/**************************************************************************
|
|
* name: mgai.h
|
|
*
|
|
* description: Description des MACROS d'interface a MGA
|
|
*
|
|
* designed: Alain Bouchard, 2 juillet 1992
|
|
* last modified: $Author: jyharbec $, $Date: 95/07/07 06:16:09 $
|
|
*
|
|
* version: $Id: MGAI.H 1.2 95/07/07 06:16:09 jyharbec Exp $
|
|
*
|
|
****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define mgaInitSimulation(m)
|
|
#define mgaSetSimulationModel(m)
|
|
#define mgaCloseSimulation()
|
|
#define mgaSuspendSimulation()
|
|
#define mgaResumeSimulation()
|
|
|
|
|
|
|
|
|
|
#if !defined(MGA_ALPHA)
|
|
|
|
#define dacWriteDWORD(a, d) { \
|
|
*((volatile unsigned long _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))) = (d); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacWriteWORD(a, d) { \
|
|
*((volatile unsigned short _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))) = (d); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacWriteBYTE(a, d) { \
|
|
*((volatile unsigned char _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))) = (d); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
|
|
#define dacReadDWORD(a, d) { \
|
|
(d) = *((volatile unsigned long _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacReadWORD(a, d) { \
|
|
(d) = *((volatile unsigned short _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacReadBYTE(a, d) { \
|
|
(d) = *((volatile unsigned char _FAR *) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#else
|
|
|
|
#define dacWriteDWORD(a, d) { \
|
|
VideoPortWriteRegisterUlong((PULONG) &(*(pMGA + RAMDAC_OFFSET + (a))), (d)); \
|
|
MEMORY_BARRIER(); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacWriteWORD(a, d) { \
|
|
VideoPortWriteRegisterUshort((PUSHORT) &(*(pMGA + RAMDAC_OFFSET + (a))), (d)); \
|
|
MEMORY_BARRIER(); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacWriteBYTE(a, d) { \
|
|
VideoPortWriteRegisterUchar((PUCHAR) &(*(pMGA + RAMDAC_OFFSET + (a))), (d)); \
|
|
MEMORY_BARRIER(); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
|
|
#define dacReadDWORD(a, d) { \
|
|
(d) = VideoPortReadRegisterUlong((PULONG) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacReadWORD(a, d) { \
|
|
(d) = VideoPortReadRegisterUshort((PUSHORT) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#define dacReadBYTE(a, d) { \
|
|
(d) = VideoPortReadRegisterUchar((PUCHAR) &(*(pMGA + RAMDAC_OFFSET + (a)))); \
|
|
delay_us(1); \
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/** Because of a restriction of STORM, we can't split a dword access in 2
|
|
word accesses (16-bit compiler). That's why we redefine the mgaWriteDWORD
|
|
and mgaReadDWORD to be assembler routines (see mgai.asm) **/
|
|
|
|
#ifdef WIN31
|
|
|
|
void $mgaWriteDWORD(DWORD *addr, DWORD data);
|
|
void $mgaReadDWORD(DWORD *addr);
|
|
|
|
#define mgaWriteDWORD(a, d) $asm$mgaWriteDWORD((volatile unsigned long _FAR *) &(a),(long) (d))
|
|
#define mgaWriteWORD(a, d) *((volatile unsigned short _FAR *) &((a))) = (d)
|
|
#define mgaWriteBYTE(a, d) *((volatile unsigned char _FAR *) &((a))) = (d)
|
|
|
|
#define mgaReadDWORD(a, d) (d) = $asm$mgaReadDWORD(((volatile unsigned long _FAR *) &(a)))
|
|
#define mgaReadWORD(a, d) (d) = *((volatile unsigned short _FAR *) &((a)))
|
|
#define mgaReadBYTE(a, d) (d) = *((volatile unsigned char _FAR *) &((a)))
|
|
|
|
#define mgaPollDWORD(a, d, m) while ((*((volatile unsigned long _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
#define mgaPollWORD(a, d, m) while ((*((volatile unsigned short _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
#define mgaPollBYTE(a, d, m) while ((*((volatile unsigned char _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
|
|
#else
|
|
|
|
/* [dlee] On the DEC Alpha, we can't use *pointer to access h/w registers */
|
|
/* #if !MGA_ALPHA */ /* ORIGINAL VERSION CAUSED WARNING */
|
|
|
|
/* #if !defined(MGA_ALPHA) */
|
|
#if !defined(WINDOWS_NT)
|
|
|
|
#define mgaWriteDWORD(a, d) *((volatile unsigned long _FAR *) &((a))) = (d)
|
|
#define mgaWriteWORD(a, d) *((volatile unsigned short _FAR *) &((a))) = (d)
|
|
#define mgaWriteBYTE(a, d) *((volatile unsigned char _FAR *) &((a))) = (d)
|
|
|
|
#define mgaReadDWORD(a, d) (d) = *((volatile unsigned long _FAR *) &((a)))
|
|
#define mgaReadWORD(a, d) (d) = *((volatile unsigned short _FAR *) &((a)))
|
|
#define mgaReadBYTE(a, d) (d) = *((volatile unsigned char _FAR *) &((a)))
|
|
|
|
#define mgaPollDWORD(a, d, m) while ((*((volatile unsigned long _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
#define mgaPollWORD(a, d, m) while ((*((volatile unsigned short _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
#define mgaPollBYTE(a, d, m) while ((*((volatile unsigned char _FAR *) &((a))) & (m)) != (((d)) & ((m))))
|
|
|
|
#else
|
|
|
|
#define mgaWriteDWORD(a, d) { \
|
|
VideoPortWriteRegisterUlong((PULONG) &((a)), (ULONG)(d)); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
#define mgaWriteWORD(a, d) { \
|
|
VideoPortWriteRegisterUshort((PUSHORT) &((a)), (USHORT)(d)); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
#define mgaWriteBYTE(a, d) { \
|
|
VideoPortWriteRegisterUchar((PUCHAR) &((a)), (UCHAR)(d)); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
|
|
#define mgaReadDWORD(a, d) { \
|
|
(d) = VideoPortReadRegisterUlong((PULONG) &((a))); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
#define mgaReadWORD(a, d) { \
|
|
(d) = VideoPortReadRegisterUshort((PUSHORT) &((a))); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
#define mgaReadBYTE(a, d) { \
|
|
(d) = VideoPortReadRegisterUchar((PUCHAR) &((a))); \
|
|
MEMORY_BARRIER(); \
|
|
}
|
|
|
|
#define mgaPollDWORD(a, d, m) { \
|
|
MEMORY_BARRIER(); \
|
|
while ((VideoPortReadRegisterUlong((PULONG) &((a))) & (m)) != (((d)) & ((m)))); \
|
|
}
|
|
#define mgaPollWORD(a, d, m) { \
|
|
MEMORY_BARRIER(); \
|
|
while ((VideoPortReadRegisterUshort((PUSHORT) &((a))) & (m)) != (((d)) & ((m)))); \
|
|
}
|
|
#define mgaPollBYTE(a, d, m) { \
|
|
MEMORY_BARRIER(); \
|
|
while ((VideoPortReadRegisterUchar((PUCHAR) &((a))) & (m)) != (((d)) & ((m)))); \
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|