cleaned up harts stack allocation
[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 static inline int
11 __hart_self()
12 {
13         int id;
14         asm volatile ("mov %%g6,%0" : "=r"(id));
15         return id;
16 }
17
18 static inline void
19 __hart_relax()
20 {
21         // TODO: relax
22 }
23
24 static inline int
25 __hart_swap(int* addr, int val)
26 {
27         asm volatile ("swap [%2],%0" :"=r"(val) :"0"(val),"r"(addr) :"memory");
28         return val;
29 }
30
31 #endif