Hardware Assist - Oracle StorageTek T10000 Reference Manual

Hide thumbs Also See for StorageTek T10000:
Table of Contents

Advertisement

Vendor Unique iSCSI CRC32C
(crc >> 8);
#if defined(__sparc)
#endif
}

Hardware Assist

Intel Nehalem
#if defined(__i386) || defined(__amd64) || defined(__x86_64)
/* Common Solaris and Linux code */
uint32_t
calc_crc32c_intel(char *buf, int len, uint32_t crc)
{
262 T10000: Interface Reference Manual
crc = crc32c_table[(crc ^ *blk_adr++) & 0xFF] ^
}
crc = (crc & 0xff000000) >> 24 |
(crc & 0xff0000) >> 8 |
(crc & 0xff00) << 8 |
(crc & 0xff) << 24;
return (crc ^ CRC32C_XOR);
uint8_t *addr = (uint8_t *)buf;
int i;
int align;
int length;
/* calc crc for unaligned memory addresses */
if ((align = ((intptr_t)addr & CRC32C_ALIGN)) > 0) {
align = CRC32C_SIZE - align;
align = (align > len) ? len : align;
for (i = 0; i < align; i++) {
__asm__ __volatile__(
addr++;
}
len -= align;
}
/* calc crc for word aligned memory addresses */
/* "crc32 r32, r/m8" */
".byte 0xF2, 0x0F, 0x38, 0xF0, 0xF1"
: "=S"(crc)
: "0"(crc), "c"(*addr));
August 2016

Advertisement

Table of Contents
loading

Table of Contents