2
0

300-arc.patch 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --- a/sysdeps/arc/atomic-machine.h
  2. +++ b/sysdeps/arc/atomic-machine.h
  3. @@ -64,6 +64,10 @@ typedef uintmax_t uatomic_max_t;
  4. __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
  5. mem, new, old, __ATOMIC_ACQUIRE)
  6. +#ifdef __ARC700__
  7. +#define atomic_full_barrier() ({ asm volatile ("sync":::"memory"); })
  8. +#else
  9. #define atomic_full_barrier() ({ asm volatile ("dmb 3":::"memory"); })
  10. +#endif
  11. #endif /* _ARC_BITS_ATOMIC_H */
  12. --- a/sysdeps/unix/sysv/linux/arc/syscall.S
  13. +++ b/sysdeps/unix/sysv/linux/arc/syscall.S
  14. @@ -24,8 +24,13 @@ ENTRY (syscall)
  15. mov_s r1, r2
  16. mov_s r2, r3
  17. mov_s r3, r4
  18. +#ifdef __ARC700__
  19. + mov r4, r5
  20. + mov r5, r6
  21. +#else
  22. mov_s r4, r5
  23. mov_s r5, r6
  24. +#endif
  25. ARC_TRAP_INSN
  26. brhi r0, -4096, L (call_syscall_err)
  27. --- a/sysdeps/unix/sysv/linux/arc/sysdep.h
  28. +++ b/sysdeps/unix/sysv/linux/arc/sysdep.h
  29. @@ -128,7 +128,11 @@ L (call_syscall_err): ASM_LINE_SEP \
  30. mov r8, __NR_##syscall_name ASM_LINE_SEP \
  31. ARC_TRAP_INSN ASM_LINE_SEP
  32. +# ifdef __ARC700__
  33. +# define ARC_TRAP_INSN trap0
  34. +# else
  35. # define ARC_TRAP_INSN trap_s 0
  36. +# endif
  37. #else /* !__ASSEMBLER__ */
  38. @@ -139,7 +143,11 @@ extern long int __syscall_error (long in
  39. hidden_proto (__syscall_error)
  40. # endif
  41. +# ifdef __ARC700__
  42. +# define ARC_TRAP_INSN "trap0 \n\t"
  43. +# else
  44. # define ARC_TRAP_INSN "trap_s 0 \n\t"
  45. +#endif
  46. # undef INTERNAL_SYSCALL_NCS
  47. # define INTERNAL_SYSCALL_NCS(number, nr_args, args...) \