head.S 684 B

123456789101112131415161718192021222324252627282930313233343536
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Copyright (C) 2022 Matthias Schiffer <[email protected]>
  4. *
  5. * Based on Linux arch/powerpc/boot/crt0.S, which is:
  6. *
  7. * Copyright (C) Paul Mackerras 1997.
  8. */
  9. #include <ppc_asm.h>
  10. .text
  11. .global _start
  12. _start:
  13. /* Do a cache flush for our text, in case the loader didn't */
  14. lis r3,_text_start@ha
  15. addi r3,r3,_text_start@l
  16. li r4,_text_len
  17. bl flush_cache
  18. /* Clear the BSS */
  19. lis r3,_bss_start@ha
  20. addi r3,r3,_bss_start@l
  21. li r4,0
  22. li r5,_bss_len
  23. bl memset
  24. /* Set up stack */
  25. lis r1,_stack_top@ha
  26. addi r1,r1,_stack_top@l
  27. /* Establish a stack frame */
  28. li r0,0
  29. stwu r0,-16(r1)
  30. /* Call start */
  31. b start