Link with 'ld'.  You can do just about anything you'd like.  It's not quite clear to me what you want to do exactly (and I'd guess it would give away your secret cunning plan to tell), but you can move the text segment where you'd like with "-Ttext 0xADDRESS".
		
		
	 
Ok, -Ttext 0xADDRESS didn't work too well. ld completely ignored me 
Try with "--section-start" as well, but the same result 
However, feeding ld a linkerscript with:
PROVIDE (__executable_start = 0x10000000); . = 0x10000000 + SIZEOF_HEADERS;
Seems to work just fine 
Now... next job is to patch into the Linux SWI handler