aboutsummaryrefslogtreecommitdiffstats
path: root/lfsr.c
blob: 664760a7a38a283a8ce0d2207747b8cbbf23faaf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <linux/kernel.h>

void mix_lfsr(u32 h[4], const u32 v[4])
{
	u32 w;
	int i;

	for (i = 0; i < 4; ++i) {
		w = h[0] ^ h[1] ^ h[3] ^ v[i];
		w ^= w << 17;
		w ^= w >> 6;
		w ^= w >> 9;
		h[0] = h[1];
		h[1] = h[2];
		h[2] = h[3];
		h[3] = w;
	}
}