Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / metag / include / asm / core_reg.h
1 #ifndef __ASM_METAG_CORE_REG_H_
2 #define __ASM_METAG_CORE_REG_H_
3
4 #include <asm/metag_regs.h>
5
6 extern void core_reg_write(int unit, int reg, int thread, unsigned int val);
7 extern unsigned int core_reg_read(int unit, int reg, int thread);
8
9 /*
10  * These macros allow direct access from C to any register known to the
11  * assembler. Example candidates are TXTACTCYC, TXIDLECYC, and TXPRIVEXT.
12  */
13
14 #define __core_reg_get(reg) ({                                          \
15         unsigned int __grvalue;                                         \
16         asm volatile("MOV       %0," #reg                               \
17                      : "=r" (__grvalue));                               \
18         __grvalue;                                                      \
19 })
20
21 #define __core_reg_set(reg, value) do {                                 \
22         unsigned int __srvalue = (value);                               \
23         asm volatile("MOV       " #reg ",%0"                            \
24                      :                                                  \
25                      : "r" (__srvalue));                                \
26 } while (0)
27
28 #define __core_reg_swap(reg, value) do {                                \
29         unsigned int __srvalue = (value);                               \
30         asm volatile("SWAP      " #reg ",%0"                            \
31                      : "+r" (__srvalue));                               \
32         (value) = __srvalue;                                            \
33 } while (0)
34
35 #endif