Also, U-Boot can boot a lot of things this days.
So if I were to build an OS for ARM or MIPS I would:
1) Build it on an emulator that can boot from ELF or a binary blob.
2) When it's time to run on real hardware, try to use U-Boot.
3) If that fails, write my own boot loader.
The moral of the story is: bootloaders are not my kind of fun, so I'll avoid writing them at all costs.