⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complong.c

📁 详细介绍了一篇关于pci开发的接口芯片
💻 C
字号:
/* complong.c

   lcompare -> addr1 & addr2 increment
   lcompare_1 -> addr1 stays same, addr2

   All have same...

   Entry:
   Exit: <> if OK.

*/

#include <stdtypes.h>
#include <clib1.h>
#include <string.h>
#include <stdio.h>

int lcompare(LONG length, VOID *addr1, VOID *addr2, \
    CHAR *err_string, WORD max_err_length)

/* Long compare both addresses increment.
*/
{
   register VLONG *sptr = addr1, *dptr = addr2;
   register LONG counter = length/4, sbdata, wsdata;
   CHAR local_str[80];

   while( counter )
   {
		sbdata = *sptr++;
		wsdata = *dptr++;
      if ( sbdata != wsdata )
      {
         sprintf( local_str, "LONG miscompare offset $%8.8lx bytes.\n", length - (counter * 4) );
         strmcat( err_string, max_err_length, local_str );
         sprintf( local_str, "SB: $%8.8lx, WS: $%8.8lx.\n", sbdata, wsdata );
         strmcat( err_string, max_err_length, local_str );
         return(0);
      }

      counter--;
   }

   return(1);
}


int lcompare_1( LONG length, VOID *addr1, VOID *addr2, \
    CHAR *err_string, WORD max_err_length)

/* Long compare, addr1 does not increment.
*/
{
   register VLONG *sptr = addr1, *dptr = addr2;
   register LONG counter = length/4;
   register LONG sbdata, wsdata;
   CHAR local_str[80];

   while( counter )
   {
		sbdata = *sptr;
		wsdata = *dptr++;
      if ( sbdata != wsdata )
      {
         sprintf( local_str, "LONG miscompare offset $%8.8lx bytes.\n", length - (counter * 4) );
         strmcat( err_string, max_err_length, local_str );
         sprintf( local_str, "SB: $%8.8lx, WS: $%8.8lx.\n", sbdata, wsdata );
         strmcat( err_string, max_err_length, local_str );
         return(0);
      }

      counter--;
   }

   return(1);
}



int physical_lcompare(LONG length, UINT32 addr1, UINT32 addr2, \
    CHAR *err_string, WORD max_err_length)

/* Long compare both addresses increment.
*/
{
   register UINT32 counter = length/4;
   register UINT32 sbdata, wsdata;
   CHAR local_str[80];

   while( counter )
   {
		sbdata = xpeek32(addr1);
		addr1 += 4;
		wsdata = xpeek32(addr2);
		addr2 += 4;
      if ( sbdata != wsdata )
      {
         sprintf( local_str, "LONG miscompare offset $%8.8lx bytes.\n", length - (counter * 4) );
         strmcat( err_string, max_err_length, local_str );
         sprintf( local_str, "SB: $%8.8lx, WS: $%8.8lx.\n", sbdata, wsdata );
         strmcat( err_string, max_err_length, local_str );
         return(0);
      }

      counter--;
   }

   return(1);
}


int physical_lcompare_1( LONG length, UINT32 addr1, UINT32 addr2, \
    CHAR *err_string, WORD max_err_length)

/* Long compare, addr1 does not increment.
*/
{
   register UINT32 counter = length/4;
   register UINT32 sbdata, wsdata;
   CHAR local_str[80];

   while( counter )
   {
		sbdata = xpeek32(addr1);
		wsdata = xpeek32(addr2);
		addr2 += 4;
      if ( sbdata != wsdata )
      {
         sprintf( local_str, "LONG miscompare offset $%8.8lx bytes.\n", length - (counter * 4) );
         strmcat( err_string, max_err_length, local_str );
         sprintf( local_str, "SB: $%8.8lx, WS: $%8.8lx.\n", sbdata, wsdata );
         strmcat( err_string, max_err_length, local_str );
         return(0);
      }

      counter--;
   }

   return(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -