12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #ifndef _PT_MACHINE_H
- #define _PT_MACHINE_H 1
- #include <features.h>
- #include <sys/syscall.h>
- #ifndef PT_EI
- # define PT_EI __extern_always_inline
- #endif
- PT_EI long int testandset(int*);
- #define OR1K_ATOMIC_XCHG 1
- PT_EI long int
- testandset (int *spinlock)
- {
- int err;
- int oldvalue = 1;
- err = INLINE_SYSCALL(or1k_atomic, 3, OR1K_ATOMIC_XCHG, spinlock, &oldvalue);
- return (oldvalue);
- }
- #define CURRENT_STACK_FRAME stack_pointer()
- static inline char *stack_pointer(void)
- {
- unsigned long ret;
- __asm__ __volatile__ ("l.ori %0, r1, 0" : "=r" (ret));
- return (char *)ret;
- }
- #endif
|