Fast algorithm for generating white noise

I was looking for ways to generate white noise in a C program running on STM32F4 (this family of MCU-s has a RNG, but it’s way too slow to use for realtime audio).
Didn’t really find much on the subject. A lot of stuff on PRNG, but all the articles I found seemed to focus on the cryptographic use and the algorithms for that are bit too slow to use on a puny MCU (in my project I wanted to generate 24000 noise samples every second, so I needed an algorithm that would be as fast and simple as possible – the randomness is a nonissue in audio world).

The following snippet is based on code found here:
http://www.bobwheeler.com/statistics/Password/MarsagliaPost.txt

 uint32_t noise_m_z=362436069;
 uint32_t noise_m_w=521288629;

 uint32_t getNoiseSample(void) {
     noise_m_z=36969*(noise_m_z&65535)+(noise_m_z>>16);
     noise_m_w=18000*(noise_m_w&65535)+(noise_m_w>>16);
     return (noise_m_z<<16)+noise_m_w;
 }

I personally treat the resulting uint as Q31 type. This way it is a proper audio sample – a value between -1 and +1 and usable with DSP functions.