| .. | .. |
|---|
| 18 | 18 | #include <asm/word-at-a-time.h> |
|---|
| 19 | 19 | #endif |
|---|
| 20 | 20 | |
|---|
| 21 | | -#define SIPROUND \ |
|---|
| 22 | | - do { \ |
|---|
| 23 | | - v0 += v1; v1 = rol64(v1, 13); v1 ^= v0; v0 = rol64(v0, 32); \ |
|---|
| 24 | | - v2 += v3; v3 = rol64(v3, 16); v3 ^= v2; \ |
|---|
| 25 | | - v0 += v3; v3 = rol64(v3, 21); v3 ^= v0; \ |
|---|
| 26 | | - v2 += v1; v1 = rol64(v1, 17); v1 ^= v2; v2 = rol64(v2, 32); \ |
|---|
| 27 | | - } while (0) |
|---|
| 21 | +#define SIPROUND SIPHASH_PERMUTATION(v0, v1, v2, v3) |
|---|
| 28 | 22 | |
|---|
| 29 | 23 | #define PREAMBLE(len) \ |
|---|
| 30 | | - u64 v0 = 0x736f6d6570736575ULL; \ |
|---|
| 31 | | - u64 v1 = 0x646f72616e646f6dULL; \ |
|---|
| 32 | | - u64 v2 = 0x6c7967656e657261ULL; \ |
|---|
| 33 | | - u64 v3 = 0x7465646279746573ULL; \ |
|---|
| 24 | + u64 v0 = SIPHASH_CONST_0; \ |
|---|
| 25 | + u64 v1 = SIPHASH_CONST_1; \ |
|---|
| 26 | + u64 v2 = SIPHASH_CONST_2; \ |
|---|
| 27 | + u64 v3 = SIPHASH_CONST_3; \ |
|---|
| 34 | 28 | u64 b = ((u64)(len)) << 56; \ |
|---|
| 35 | 29 | v3 ^= key->key[1]; \ |
|---|
| 36 | 30 | v2 ^= key->key[0]; \ |
|---|
| .. | .. |
|---|
| 69 | 63 | bytemask_from_count(left))); |
|---|
| 70 | 64 | #else |
|---|
| 71 | 65 | switch (left) { |
|---|
| 72 | | - case 7: b |= ((u64)end[6]) << 48; |
|---|
| 73 | | - case 6: b |= ((u64)end[5]) << 40; |
|---|
| 74 | | - case 5: b |= ((u64)end[4]) << 32; |
|---|
| 66 | + case 7: b |= ((u64)end[6]) << 48; /* fall through */ |
|---|
| 67 | + case 6: b |= ((u64)end[5]) << 40; /* fall through */ |
|---|
| 68 | + case 5: b |= ((u64)end[4]) << 32; /* fall through */ |
|---|
| 75 | 69 | case 4: b |= le32_to_cpup(data); break; |
|---|
| 76 | | - case 3: b |= ((u64)end[2]) << 16; |
|---|
| 70 | + case 3: b |= ((u64)end[2]) << 16; /* fall through */ |
|---|
| 77 | 71 | case 2: b |= le16_to_cpup(data); break; |
|---|
| 78 | 72 | case 1: b |= end[0]; |
|---|
| 79 | 73 | } |
|---|
| .. | .. |
|---|
| 102 | 96 | bytemask_from_count(left))); |
|---|
| 103 | 97 | #else |
|---|
| 104 | 98 | switch (left) { |
|---|
| 105 | | - case 7: b |= ((u64)end[6]) << 48; |
|---|
| 106 | | - case 6: b |= ((u64)end[5]) << 40; |
|---|
| 107 | | - case 5: b |= ((u64)end[4]) << 32; |
|---|
| 99 | + case 7: b |= ((u64)end[6]) << 48; /* fall through */ |
|---|
| 100 | + case 6: b |= ((u64)end[5]) << 40; /* fall through */ |
|---|
| 101 | + case 5: b |= ((u64)end[4]) << 32; /* fall through */ |
|---|
| 108 | 102 | case 4: b |= get_unaligned_le32(end); break; |
|---|
| 109 | | - case 3: b |= ((u64)end[2]) << 16; |
|---|
| 103 | + case 3: b |= ((u64)end[2]) << 16; /* fall through */ |
|---|
| 110 | 104 | case 2: b |= get_unaligned_le16(end); break; |
|---|
| 111 | 105 | case 1: b |= end[0]; |
|---|
| 112 | 106 | } |
|---|
| .. | .. |
|---|
| 269 | 263 | bytemask_from_count(left))); |
|---|
| 270 | 264 | #else |
|---|
| 271 | 265 | switch (left) { |
|---|
| 272 | | - case 7: b |= ((u64)end[6]) << 48; |
|---|
| 273 | | - case 6: b |= ((u64)end[5]) << 40; |
|---|
| 274 | | - case 5: b |= ((u64)end[4]) << 32; |
|---|
| 266 | + case 7: b |= ((u64)end[6]) << 48; /* fall through */ |
|---|
| 267 | + case 6: b |= ((u64)end[5]) << 40; /* fall through */ |
|---|
| 268 | + case 5: b |= ((u64)end[4]) << 32; /* fall through */ |
|---|
| 275 | 269 | case 4: b |= le32_to_cpup(data); break; |
|---|
| 276 | | - case 3: b |= ((u64)end[2]) << 16; |
|---|
| 270 | + case 3: b |= ((u64)end[2]) << 16; /* fall through */ |
|---|
| 277 | 271 | case 2: b |= le16_to_cpup(data); break; |
|---|
| 278 | 272 | case 1: b |= end[0]; |
|---|
| 279 | 273 | } |
|---|
| .. | .. |
|---|
| 302 | 296 | bytemask_from_count(left))); |
|---|
| 303 | 297 | #else |
|---|
| 304 | 298 | switch (left) { |
|---|
| 305 | | - case 7: b |= ((u64)end[6]) << 48; |
|---|
| 306 | | - case 6: b |= ((u64)end[5]) << 40; |
|---|
| 307 | | - case 5: b |= ((u64)end[4]) << 32; |
|---|
| 299 | + case 7: b |= ((u64)end[6]) << 48; /* fall through */ |
|---|
| 300 | + case 6: b |= ((u64)end[5]) << 40; /* fall through */ |
|---|
| 301 | + case 5: b |= ((u64)end[4]) << 32; /* fall through */ |
|---|
| 308 | 302 | case 4: b |= get_unaligned_le32(end); break; |
|---|
| 309 | | - case 3: b |= ((u64)end[2]) << 16; |
|---|
| 303 | + case 3: b |= ((u64)end[2]) << 16; /* fall through */ |
|---|
| 310 | 304 | case 2: b |= get_unaligned_le16(end); break; |
|---|
| 311 | 305 | case 1: b |= end[0]; |
|---|
| 312 | 306 | } |
|---|
| .. | .. |
|---|
| 389 | 383 | } |
|---|
| 390 | 384 | EXPORT_SYMBOL(hsiphash_4u32); |
|---|
| 391 | 385 | #else |
|---|
| 392 | | -#define HSIPROUND \ |
|---|
| 393 | | - do { \ |
|---|
| 394 | | - v0 += v1; v1 = rol32(v1, 5); v1 ^= v0; v0 = rol32(v0, 16); \ |
|---|
| 395 | | - v2 += v3; v3 = rol32(v3, 8); v3 ^= v2; \ |
|---|
| 396 | | - v0 += v3; v3 = rol32(v3, 7); v3 ^= v0; \ |
|---|
| 397 | | - v2 += v1; v1 = rol32(v1, 13); v1 ^= v2; v2 = rol32(v2, 16); \ |
|---|
| 398 | | - } while (0) |
|---|
| 386 | +#define HSIPROUND HSIPHASH_PERMUTATION(v0, v1, v2, v3) |
|---|
| 399 | 387 | |
|---|
| 400 | 388 | #define HPREAMBLE(len) \ |
|---|
| 401 | | - u32 v0 = 0; \ |
|---|
| 402 | | - u32 v1 = 0; \ |
|---|
| 403 | | - u32 v2 = 0x6c796765U; \ |
|---|
| 404 | | - u32 v3 = 0x74656462U; \ |
|---|
| 389 | + u32 v0 = HSIPHASH_CONST_0; \ |
|---|
| 390 | + u32 v1 = HSIPHASH_CONST_1; \ |
|---|
| 391 | + u32 v2 = HSIPHASH_CONST_2; \ |
|---|
| 392 | + u32 v3 = HSIPHASH_CONST_3; \ |
|---|
| 405 | 393 | u32 b = ((u32)(len)) << 24; \ |
|---|
| 406 | 394 | v3 ^= key->key[1]; \ |
|---|
| 407 | 395 | v2 ^= key->key[0]; \ |
|---|
| .. | .. |
|---|
| 432 | 420 | v0 ^= m; |
|---|
| 433 | 421 | } |
|---|
| 434 | 422 | switch (left) { |
|---|
| 435 | | - case 3: b |= ((u32)end[2]) << 16; |
|---|
| 423 | + case 3: b |= ((u32)end[2]) << 16; /* fall through */ |
|---|
| 436 | 424 | case 2: b |= le16_to_cpup(data); break; |
|---|
| 437 | 425 | case 1: b |= end[0]; |
|---|
| 438 | 426 | } |
|---|
| .. | .. |
|---|
| 455 | 443 | v0 ^= m; |
|---|
| 456 | 444 | } |
|---|
| 457 | 445 | switch (left) { |
|---|
| 458 | | - case 3: b |= ((u32)end[2]) << 16; |
|---|
| 446 | + case 3: b |= ((u32)end[2]) << 16; /* fall through */ |
|---|
| 459 | 447 | case 2: b |= get_unaligned_le16(end); break; |
|---|
| 460 | 448 | case 1: b |= end[0]; |
|---|
| 461 | 449 | } |
|---|