Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 30 May 2003 10:59:01 +0200 | From | Alex Riesen <> | Subject | Re: Algoritmic Complexity Attacks and 2.4.20 the dcache code |
| |
David S. Miller, Fri, May 30, 2003 08:24:40 +0200: > From: Scott A Crosby <scrosby@cs.rice.edu> > Date: 30 May 2003 00:04:24 -0500 > > Have you seen the current dcache function? > > /* Linux dcache */ > #define HASH_3(hi,ho,c) ho=(hi + (c << 4) + (c >> 4)) * 11 > > Awesome, moving the Jenkins will actually save us some > cycles :-)
static int hash_3(int hi, int c) { return (hi + (c << 4) + (c >> 4)) * 11; }
gcc-3.2.1 -O2 -march=pentium
hash_3: pushl %ebp movl %esp, %ebp movl 12(%ebp), %eax movl 8(%ebp), %ecx movl %eax, %edx popl %ebp sall $4, %edx sarl $4, %eax addl %ecx, %edx addl %eax, %edx leal (%edx,%edx,4), %eax leal (%edx,%eax,2), %eax ret
It is not guaranteed to be this way on all architectures, of course. But still - no multiplications.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |