Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. diff --git a/firmware/asm/mips/thread-mips32.c b/firmware/asm/mips/thread-mips32.c
  2. index e754df7e29..664375d4e5 100644
  3. --- a/firmware/asm/mips/thread-mips32.c
  4. +++ b/firmware/asm/mips/thread-mips32.c
  5. @@ -26,20 +26,20 @@
  6. *---------------------------------------------------------------------------
  7. */
  8.  
  9. -void start_thread(void); /* Provide C access to ASM label */
  10. -static void USED_ATTR _start_thread(void)
  11. +static void USED_ATTR start_thread(void* addr)
  12. {
  13. /* t1 = context */
  14. asm volatile (
  15. "start_thread: \n"
  16. ".set noreorder \n"
  17. ".set noat \n"
  18. - "lw $8, 4($9) \n" /* Fetch thread function pointer ($8 = t0, $9 = t1) */
  19. - "lw $29, 36($9) \n" /* Set initial sp(=$29) */
  20. + "lw $8, 4(%0) \n" /* Fetch thread function pointer ($8 = t0) */
  21. + "lw $29, 36(%0) \n" /* Set initial sp(=$29) */
  22. "jalr $8 \n" /* Start the thread */
  23. - "sw $0, 44($9) \n" /* Clear start address */
  24. + "sw $0, 44(%0) \n" /* Clear start address */
  25. ".set at \n"
  26. ".set reorder \n"
  27. + : : "r" (addr) : "t0", "t1"
  28. );
  29. thread_exit();
  30. }
  31. @@ -90,7 +90,7 @@ static inline void load_context(const void* addr)
  32. "beqz $8, running \n" /* NULL -> already running */
  33. "nop \n"
  34. "jr $8 \n"
  35. - "move $9, %0 \n" /* t1 = context */
  36. + "move $4, %0 \n" /* a0 = context */
  37. "running: \n"
  38. "lw $16, 0(%0) \n" /* s0 */
  39. "lw $17, 4(%0) \n" /* s1 */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement