Add lm32 cpu and milkymist port
[mw/micromonitor-lm32.git] / umon_main / target / cpu / lm32 / lm32.h
1 #ifndef _CPU_LM32_H
2 #define _CPU_LM32_H
3
4 static inline unsigned int lm32_get_ie()
5 {
6         unsigned int ret;
7         asm volatile("rcsr %0, IE" : "=r"(ret) : );
8         return ret;
9 }
10
11 static inline void lm32_set_ie(unsigned int ie)
12 {
13         asm volatile("wcsr IE, %0" : : "r"(ie));
14 }
15
16 static inline unsigned int lm32_get_im()
17 {
18         unsigned int ret;
19         asm volatile("rcsr %0, IM" : "=r"(ret) : );
20         return ret;
21 }
22
23 static inline void lm32_set_im(unsigned int im)
24 {
25         asm volatile("wcsr IM, %0" : : "r"(im));
26 }
27
28 static inline unsigned int lm32_get_ip()
29 {
30         unsigned int ret;
31         asm volatile("rcsr %0, IP" : "=r"(ret) : );
32         return ret;
33 }
34
35 static inline void lm32_set_ip(unsigned int ip)
36 {
37         asm volatile("wcsr IP, %0" : : "r"(ip));
38 }
39
40 static inline void lm32_flush_icache()
41 {
42         asm volatile(
43                         "wcsr ICC, r0\n"
44                         "nop\n"
45                         "nop\n"
46                         "nop\n"
47                         "nop\n"
48         );
49 }
50
51 static inline void lm32_flush_dcache()
52 {
53         asm volatile(
54                         "wcsr DCC, r0\n"
55                         "nop\n"
56         );
57 }
58
59 #endif
60