Messages in this thread | | | Date | Thu, 7 Aug 2008 20:38:35 -0700 | From | "Ulrich Drepper" <> | Subject | Re: [PATCH] Using Intel CRC32 instruction to accelerate CRC32c algorithm by new crypto API -V3. |
| |
On Tue, Aug 5, 2008 at 10:23 PM, Austin Zhang <austin_zhang@linux.intel.com> wrote: > +#ifdef CONFIG_X86_64 > +#define REX_PRE "0x48, " > +#define SCALE_F 8 > +#else > +#define REX_PRE > +#define SCALE_F 4 > +#endif [...] > +static u32 __pure crc32c_intel_le_hw(u32 crc, unsigned char const *p, size_t len) > +{ > + unsigned int iquotient = len / SCALE_F; > + unsigned int iremainder = len % SCALE_F; > + unsigned long *ptmp = (unsigned long *)p; > + > + while (iquotient--) { > + __asm__ __volatile__( > + ".byte 0xf2, " REX_PRE "0xf, 0x38, 0xf1, 0xf1;" > + :"=S"(crc) > + :"0"(crc), "c"(*ptmp) > + ); > + ptmp++;
I think you want to use
#define SCALE_F sizeof(unsigned long)
Since the loop iteration count etc depends on
ptmp++
which depends on the type being unsigned long.
| |