*/
 
 #include <linux/hash.h>
+#include <linux/init.h>
 
 #include <asm/processor.h>
 #include <asm/cpufeature.h>
        for (i = 0; i < len / 4; i++)
                seed = crc32_u32(seed, *p32++);
 
-       switch (3 - (len & 0x03)) {
-       case 0:
+       switch (len & 3) {
+       case 3:
                tmp |= *((const u8 *) p32 + 2) << 16;
                /* fallthrough */
-       case 1:
+       case 2:
                tmp |= *((const u8 *) p32 + 1) << 8;
                /* fallthrough */
-       case 2:
+       case 1:
                tmp |= *((const u8 *) p32);
                seed = crc32_u32(seed, tmp);
-       default:
                break;
        }
 
        return seed;
 }
 
-void setup_arch_fast_hash(struct fast_hash_ops *ops)
+void __init setup_arch_fast_hash(struct fast_hash_ops *ops)
 {
        if (cpu_has_xmm4_2) {
                ops->hash  = intel_crc4_2_hash;