Hi,
I completed some code that enables SeaBIOS to relocate itself to high memory. The technique may be of interest to coreboot.
The full patch series that enables SeaBIOS relocation can be seen at:
http://www.seabios.org/pipermail/seabios/2010-September/000919.html
Most of the patch series does cleanups and seabios specific work. The run-time code, which may be of interest to coreboot, is at:
http://www.seabios.org/pipermail/seabios/2010-September/000922.html
The general idea is to have the build store linker "relocation" information (see _reloc_* symbols) into the final executable, and then have the run-time code use this information so that it can self-modify all code that depends on code position.
The SeaBIOS code only relocates part of itself, so the runtime relocation code is slightly more complex. A code blob that was fully relocated would be a little simpler (it would need only one call to updateRelocs).
-Kevin