Removes unused functions from Parlib's arch.h
[akaros.git] / user / parlib / include / riscv / arch.h
1 #ifndef PARLIB_ARCH_H
2 #define PARLIB_ARCH_H
3
4 #include <ros/common.h>
5 #include <ros/trapframe.h>
6 #include <ros/arch/arch.h>
7
8 #define internal_function
9
10 #define ARCH_CL_SIZE 64
11
12 static __inline void
13 set_stack_pointer(void* sp)
14 {
15         asm volatile ("move sp, %0" : : "r"(sp) : "memory");
16 }
17
18 static __inline void
19 breakpoint(void)
20 {
21         asm volatile ("break");
22 }
23
24 static __inline uint64_t
25 read_tsc(void)
26 {
27         unsigned long cycles;
28         asm ("rdcycle %0" : "=r"(cycles));
29         return (uint64_t)cycles;
30 }
31
32 static __inline uint64_t
33 read_tsc_serialized(void)
34 {
35         return read_tsc();
36 }
37
38 static __inline void
39 cpu_relax(void)
40 {
41         long ctr;
42         asm volatile("li %0, 8; 1: addi %0, %0, -1; bnez %0, 1b" : "=r"(ctr) : : "memory");
43 }
44
45 static inline void save_fp_state(struct ancillary_state* silly)
46 {
47         uint32_t fsr = read_fsr();
48
49         asm("fsd fs0,%0" : "=m"(silly->fpr[0]));
50         asm("fsd fs1,%0" : "=m"(silly->fpr[1]));
51         asm("fsd fs2,%0" : "=m"(silly->fpr[2]));
52         asm("fsd fs3,%0" : "=m"(silly->fpr[3]));
53         asm("fsd fs4,%0" : "=m"(silly->fpr[4]));
54         asm("fsd fs5,%0" : "=m"(silly->fpr[5]));
55         asm("fsd fs6,%0" : "=m"(silly->fpr[6]));
56         asm("fsd fs7,%0" : "=m"(silly->fpr[7]));
57         asm("fsd fs8,%0" : "=m"(silly->fpr[8]));
58         asm("fsd fs9,%0" : "=m"(silly->fpr[9]));
59         asm("fsd fs10,%0" : "=m"(silly->fpr[10]));
60         asm("fsd fs11,%0" : "=m"(silly->fpr[11]));
61         asm("fsd fs12,%0" : "=m"(silly->fpr[12]));
62         asm("fsd fs13,%0" : "=m"(silly->fpr[13]));
63         asm("fsd fs14,%0" : "=m"(silly->fpr[14]));
64         asm("fsd fs15,%0" : "=m"(silly->fpr[15]));
65
66         silly->fsr = fsr;
67 }
68
69 static inline void restore_fp_state(struct ancillary_state* silly)
70 {
71         uint32_t fsr = silly->fsr;
72
73         asm("fld fs0,%0" : : "m"(silly->fpr[0]));
74         asm("fld fs1,%0" : : "m"(silly->fpr[1]));
75         asm("fld fs2,%0" : : "m"(silly->fpr[2]));
76         asm("fld fs3,%0" : : "m"(silly->fpr[3]));
77         asm("fld fs4,%0" : : "m"(silly->fpr[4]));
78         asm("fld fs5,%0" : : "m"(silly->fpr[5]));
79         asm("fld fs6,%0" : : "m"(silly->fpr[6]));
80         asm("fld fs7,%0" : : "m"(silly->fpr[7]));
81         asm("fld fs8,%0" : : "m"(silly->fpr[8]));
82         asm("fld fs9,%0" : : "m"(silly->fpr[9]));
83         asm("fld fs10,%0" : : "m"(silly->fpr[10]));
84         asm("fld fs11,%0" : : "m"(silly->fpr[11]));
85         asm("fld fs12,%0" : : "m"(silly->fpr[12]));
86         asm("fld fs13,%0" : : "m"(silly->fpr[13]));
87         asm("fld fs14,%0" : : "m"(silly->fpr[14]));
88         asm("fld fs15,%0" : : "m"(silly->fpr[15]));
89
90         write_fsr(fsr);
91 }
92
93 #endif /* PARLIB_ARCH_H */