GNUDE is a complete suite of GNU C, C++, Fortran, and Java Cross Compilers, and the GDB CPU Simulator and Debugger for embedded microprocessor applications development. Targets development for ARM7, ARM9, and XScale applications.
Is a bit obsolete now - there is apparently a newer port of GCC that generates more efficient code, allows global variables etc. - https://developer.brewmp.com/forum/howto-compile-gnu-winarm-410-0 works fine for me though. Even works under Wine on Ubuntu 11.10.