startup_gcc.S 846 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021/04/24 Juice The first version
  9. */
  10. .global _start
  11. .section ".start", "ax"
  12. _start:
  13. .align 3
  14. csrw mideleg, 0
  15. csrw medeleg, 0
  16. csrw mie, 0
  17. csrw mip, 0
  18. la t0, trap_entry
  19. csrw mtvec, t0
  20. li x1, 0
  21. li x2, 0
  22. li x3, 0
  23. li x4, 0
  24. li x5, 0
  25. li x6, 0
  26. li x7, 0
  27. li x8, 0
  28. li x9, 0
  29. li x10, 0
  30. li x11, 0
  31. li x12, 0
  32. li x13, 0
  33. li x14, 0
  34. li x15, 0
  35. li x16, 0
  36. li x17, 0
  37. li x18, 0
  38. li x19, 0
  39. li x20, 0
  40. li x21, 0
  41. li x22, 0
  42. li x23, 0
  43. li x24, 0
  44. li x25, 0
  45. li x26, 0
  46. li x27, 0
  47. li x28, 0
  48. li x29, 0
  49. li x30, 0
  50. li x31, 0
  51. /* set to initial state of FPU and disable interrupt */
  52. li t0, 0
  53. csrs mstatus, t0
  54. .option push
  55. .option norelax
  56. la gp, __global_pointer$
  57. la sp, __stack
  58. call entry
  59. call exit
  60. .option pop