The following unholy mess is distilled out of linux/arch/i386/kernel/time.c (linux-2.2.5-pre2 to be precise) after preprocessing. This is the file I reported earlier when compiled with egcs-19990321 made linux-2.2.x hang on boot.