boot1_arch.h 717 B

12345678910111213141516171819202122232425262728293031
  1. /* Any assmbly language/system dependent hacks needed to setup boot1.c so it
  2. * will work as expected and cope with whatever platform specific wierdness is
  3. * needed for this architecture. */
  4. /* Overrive the default _dl_boot function, and replace it with a bit of asm.
  5. * Then call the real _dl_boot function, which is now named _dl_boot2. */
  6. asm("\
  7. .text
  8. .globl _dl_boot
  9. _dl_boot:
  10. mov r7, sp
  11. @ ldr r0, [sp], #4
  12. mov r0,sp
  13. bl _dl_boot2
  14. mov r6, r0
  15. mov r0, r7
  16. mov pc, r6
  17. \n\
  18. ");
  19. #define _dl_boot _dl_boot2
  20. #define DL_BOOT(X) static void * __attribute__ ((unused)) _dl_boot (X)
  21. /* It seems ARM needs an offset here */
  22. #undef ELFMAGIC
  23. #define ELFMAGIC ELFMAG+load_addr