118 lines
2.2 KiB
C
118 lines
2.2 KiB
C
|
/******************************Module*Header*******************************\
|
||
|
* Module Name: debug.c
|
||
|
*
|
||
|
* debug helpers routine
|
||
|
*
|
||
|
* Copyright (c) 1992-1996 Microsoft Corporation
|
||
|
*
|
||
|
\**************************************************************************/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
LONG DebugLevel = 0;
|
||
|
LONG gcFifo = 0; // Number of currently free FIFO entries
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Routine Description:
|
||
|
*
|
||
|
* This function is variable-argument, level-sensitive debug print
|
||
|
* routine.
|
||
|
* If the specified debug level for the print statement is lower or equal
|
||
|
* to the current debug level, the message will be printed.
|
||
|
*
|
||
|
* Arguments:
|
||
|
*
|
||
|
* DebugPrintLevel - Specifies at which debugging level the string should
|
||
|
* be printed
|
||
|
*
|
||
|
* DebugMessage - Variable argument ascii c string
|
||
|
*
|
||
|
* Return Value:
|
||
|
*
|
||
|
* None.
|
||
|
*
|
||
|
***************************************************************************/
|
||
|
|
||
|
VOID
|
||
|
DebugPrint(
|
||
|
LONG DebugPrintLevel,
|
||
|
PCHAR DebugMessage,
|
||
|
...
|
||
|
)
|
||
|
|
||
|
{
|
||
|
|
||
|
va_list ap;
|
||
|
|
||
|
va_start(ap, DebugMessage);
|
||
|
|
||
|
if (DebugPrintLevel <= DebugLevel)
|
||
|
{
|
||
|
EngDebugPrint(STANDARD_DEBUG_PREFIX, DebugMessage, ap);
|
||
|
EngDebugPrint("", "\n", ap);
|
||
|
}
|
||
|
|
||
|
va_end(ap);
|
||
|
|
||
|
}
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
VOID vCheckFifoSpace(
|
||
|
BYTE* pjBase,
|
||
|
ULONG level)
|
||
|
{
|
||
|
gcFifo = level;
|
||
|
|
||
|
CP_EIEIO();
|
||
|
do {} while ((ULONG) CP_READ_REGISTER_BYTE(pjBase + HST_FIFOSTATUS) < level);
|
||
|
}
|
||
|
|
||
|
CHAR cGetFifoSpace(
|
||
|
BYTE* pjBase)
|
||
|
{
|
||
|
CHAR c;
|
||
|
|
||
|
CP_EIEIO();
|
||
|
c = CP_READ_REGISTER_BYTE(pjBase + HST_FIFOSTATUS);
|
||
|
|
||
|
gcFifo = c;
|
||
|
|
||
|
return(c);
|
||
|
}
|
||
|
|
||
|
VOID vWriteDword(
|
||
|
BYTE* pj,
|
||
|
ULONG ul)
|
||
|
{
|
||
|
gcFifo--;
|
||
|
if (gcFifo < 0)
|
||
|
{
|
||
|
gcFifo = 0;
|
||
|
RIP("Incorrect FIFO wait count");
|
||
|
}
|
||
|
|
||
|
WRITE_REGISTER_ULONG(pj, ul);
|
||
|
}
|
||
|
|
||
|
VOID vWriteByte(
|
||
|
BYTE* pj,
|
||
|
BYTE j)
|
||
|
{
|
||
|
gcFifo--;
|
||
|
if (gcFifo < 0)
|
||
|
{
|
||
|
gcFifo = 0;
|
||
|
RIP("Incorrect FIFO wait count");
|
||
|
}
|
||
|
|
||
|
WRITE_REGISTER_UCHAR(pj, j);
|
||
|
}
|
||
|
|
||
|
#endif // DBG
|