net: wan: sbni: remove assembly crc32 code
There is also a C function doing the same thing. Unless the asm code is 110% faster we could stick to the C function. Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
fecda03493
Коммит
0e67d9903d
|
@ -148,10 +148,6 @@ static int enslave( struct net_device *, struct net_device * );
|
|||
static int emancipate( struct net_device * );
|
||||
#endif
|
||||
|
||||
#ifdef __i386__
|
||||
#define ASM_CRC 1
|
||||
#endif
|
||||
|
||||
static const char version[] =
|
||||
"Granch SBNI12 driver ver 5.0.1 Jun 22 2001 Denis I.Timofeev.\n";
|
||||
|
||||
|
@ -1551,88 +1547,6 @@ __setup( "sbni=", sbni_setup );
|
|||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef ASM_CRC
|
||||
|
||||
static u32
|
||||
calc_crc32( u32 crc, u8 *p, u32 len )
|
||||
{
|
||||
register u32 _crc;
|
||||
_crc = crc;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"xorl %%ebx, %%ebx\n"
|
||||
"movl %2, %%esi\n"
|
||||
"movl %3, %%ecx\n"
|
||||
"movl $crc32tab, %%edi\n"
|
||||
"shrl $2, %%ecx\n"
|
||||
"jz 1f\n"
|
||||
|
||||
".align 4\n"
|
||||
"0:\n"
|
||||
"movb %%al, %%bl\n"
|
||||
"movl (%%esi), %%edx\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb %%dl, %%bl\n"
|
||||
"shrl $8, %%edx\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb %%dl, %%bl\n"
|
||||
"shrl $8, %%edx\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb %%dl, %%bl\n"
|
||||
"movb %%dh, %%dl\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb %%dl, %%bl\n"
|
||||
"addl $4, %%esi\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"decl %%ecx\n"
|
||||
"jnz 0b\n"
|
||||
|
||||
"1:\n"
|
||||
"movl %3, %%ecx\n"
|
||||
"andl $3, %%ecx\n"
|
||||
"jz 2f\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb (%%esi), %%bl\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"decl %%ecx\n"
|
||||
"jz 2f\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb 1(%%esi), %%bl\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
|
||||
"decl %%ecx\n"
|
||||
"jz 2f\n"
|
||||
|
||||
"movb %%al, %%bl\n"
|
||||
"shrl $8, %%eax\n"
|
||||
"xorb 2(%%esi), %%bl\n"
|
||||
"xorl (%%edi,%%ebx,4), %%eax\n"
|
||||
"2:\n"
|
||||
: "=a" (_crc)
|
||||
: "0" (_crc), "g" (p), "g" (len)
|
||||
: "bx", "cx", "dx", "si", "di"
|
||||
);
|
||||
|
||||
return _crc;
|
||||
}
|
||||
|
||||
#else /* ASM_CRC */
|
||||
|
||||
static u32
|
||||
calc_crc32( u32 crc, u8 *p, u32 len )
|
||||
{
|
||||
|
@ -1642,9 +1556,6 @@ calc_crc32( u32 crc, u8 *p, u32 len )
|
|||
return crc;
|
||||
}
|
||||
|
||||
#endif /* ASM_CRC */
|
||||
|
||||
|
||||
static u32 crc32tab[] __attribute__ ((aligned(8))) = {
|
||||
0xD202EF8D, 0xA505DF1B, 0x3C0C8EA1, 0x4B0BBE37,
|
||||
0xD56F2B94, 0xA2681B02, 0x3B614AB8, 0x4C667A2E,
|
||||
|
|
Загрузка…
Ссылка в новой задаче