7fa04d8dfdcba3443462cc63e30b29c5d0616b05
[akaros.git] / kern / arch / sparc / ros / hart.h
1 #ifndef _ROS_ARCH_HART_H
2 #define _ROS_ARCH_HART_H
3
4 #define __RAMP__
5 double do_fdiv(double,double);
6 double do_fsqrt(double);
7 double do_recip(double);
8 double do_rsqrt(double);
9
10 #define HART_ALLOCATE_STACKS
11
12 static inline int
13 __hart_self()
14 {
15         int id;
16         asm volatile ("mov %%g6,%0" : "=r"(id));
17         return id;
18 }
19
20 static inline void
21 __hart_relax()
22 {
23         // TODO: relax
24 }
25
26 static inline int
27 __hart_swap(int* addr, int val)
28 {
29         asm volatile ("swap [%2],%0" :"=r"(val) :"0"(val),"r"(addr) :"memory");
30         return val;
31 }
32
33 #endif