1
2
3
4
5
6
7
8
9#define NGET(val, fslnum) \
10 __asm__ __volatile__ ("nget %0, rfsl" #fslnum :"=r" (val));
11
12#define GET(val, fslnum) \
13 __asm__ __volatile__ ("get %0, rfsl" #fslnum :"=r" (val));
14
15#define NCGET(val, fslnum) \
16 __asm__ __volatile__ ("ncget %0, rfsl" #fslnum :"=r" (val));
17
18#define CGET(val, fslnum) \
19 __asm__ __volatile__ ("cget %0, rfsl" #fslnum :"=r" (val));
20
21#define NPUT(val, fslnum) \
22 __asm__ __volatile__ ("nput %0, rfsl" #fslnum ::"r" (val));
23
24#define PUT(val, fslnum) \
25 __asm__ __volatile__ ("put %0, rfsl" #fslnum ::"r" (val));
26
27#define NCPUT(val, fslnum) \
28 __asm__ __volatile__ ("ncput %0, rfsl" #fslnum ::"r" (val));
29
30#define CPUT(val, fslnum) \
31 __asm__ __volatile__ ("cput %0, rfsl" #fslnum ::"r" (val));
32
33
34
35#define MFS(val, reg) \
36 __asm__ __volatile__ ("mfs %0," #reg :"=r" (val));
37
38#define MTS(val, reg) \
39 __asm__ __volatile__ ("mts " #reg ", %0"::"r" (val));
40
41
42#define R14(val) \
43 __asm__ __volatile__ ("addi %0, r14, 0":"=r" (val));
44
45
46#define R17(val) \
47 __asm__ __volatile__ ("addi %0, r17, 0" : "=r" (val));
48
49#define NOP __asm__ __volatile__ ("nop");
50
51
52#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 1
53#define MSRSET(val) \
54 __asm__ __volatile__ ("msrset r0," #val );
55
56#define MSRCLR(val) \
57 __asm__ __volatile__ ("msrclr r0," #val );
58
59#else
60#define MSRSET(val) \
61{ \
62 register unsigned tmp; \
63 __asm__ __volatile__ (" \
64 mfs %0, rmsr; \
65 ori %0, %0, "#val"; \
66 mts rmsr, %0; \
67 nop;" \
68 : "=r" (tmp) \
69 : "d" (val) \
70 : "memory"); \
71}
72
73#define MSRCLR(val) \
74{ \
75 register unsigned tmp; \
76 __asm__ __volatile__ (" \
77 mfs %0, rmsr; \
78 andi %0, %0, ~"#val"; \
79 mts rmsr, %0; \
80 nop;" \
81 : "=r" (tmp) \
82 : "d" (val) \
83 : "memory"); \
84}
85#endif
86