haveged is a daemon that replenishes the /dev/random pool on Linux using an adaptation of the HArdware Volatile Entropy Gathering and Expansion algorithm invented at IRISA. The algorithm tunes itself on machines that have cpuid support, and it tested to work on bots 32 and 64-bit processors.
In practice, the collection sequence consists of a branch-heavy calculation that reads the processor time stamp readings into an data array as it permutes the array contents. The data array is sized to be twice that of the level 1 data cache and the calculation constructed so that 2 cache blocks are party to each output calculation. The calculation would be cyclical if not for the effects of other unrelated hardware events on the time stamp counter increments.
- This version fixes more test alignment woes on mips.