crt_arch.h 564 B

12345678910111213141516171819202122232425262728
  1. __asm__(
  2. ".set push\n"
  3. ".set noreorder\n"
  4. ".global _" START "\n"
  5. ".global " START "\n"
  6. ".type _" START ", @function\n"
  7. ".type " START ", @function\n"
  8. "_" START ":\n"
  9. "" START ":\n"
  10. " bal 1f \n"
  11. " move $fp, $0 \n"
  12. "2: .gpword 2b \n"
  13. " .gpword " START "_c \n"
  14. ".weak _DYNAMIC \n"
  15. ".hidden _DYNAMIC \n"
  16. " .gpword _DYNAMIC \n"
  17. "1: lw $gp, 0($ra) \n"
  18. " subu $gp, $ra, $gp \n"
  19. " move $4, $sp \n"
  20. " lw $5, 8($ra) \n"
  21. " addu $5, $5, $gp \n"
  22. " lw $25, 4($ra) \n"
  23. " addu $25, $25, $gp \n"
  24. " subu $sp, $sp, 16 \n"
  25. " jalr $25 \n"
  26. " and $sp, $sp, -8 \n"
  27. ".set pop \n"
  28. );