2 * (C) Copyright 2007 Michal Simek
4 * Michal SIMEK <monstr@monstr.eu>
6 * SPDX-License-Identifier: GPL-2.0+
10 #define NGET(val, fslnum) \
11 __asm__ __volatile__ ("nget %0, rfsl" #fslnum :"=r" (val));
13 #define GET(val, fslnum) \
14 __asm__ __volatile__ ("get %0, rfsl" #fslnum :"=r" (val));
16 #define NCGET(val, fslnum) \
17 __asm__ __volatile__ ("ncget %0, rfsl" #fslnum :"=r" (val));
19 #define CGET(val, fslnum) \
20 __asm__ __volatile__ ("cget %0, rfsl" #fslnum :"=r" (val));
22 #define NPUT(val, fslnum) \
23 __asm__ __volatile__ ("nput %0, rfsl" #fslnum ::"r" (val));
25 #define PUT(val, fslnum) \
26 __asm__ __volatile__ ("put %0, rfsl" #fslnum ::"r" (val));
28 #define NCPUT(val, fslnum) \
29 __asm__ __volatile__ ("ncput %0, rfsl" #fslnum ::"r" (val));
31 #define CPUT(val, fslnum) \
32 __asm__ __volatile__ ("cput %0, rfsl" #fslnum ::"r" (val));
35 /* machine status register */
36 #define MFS(val, reg) \
37 __asm__ __volatile__ ("mfs %0," #reg :"=r" (val));
39 #define MTS(val, reg) \
40 __asm__ __volatile__ ("mts " #reg ", %0"::"r" (val));
42 /* get return address from interrupt */
44 __asm__ __volatile__ ("addi %0, r14, 0":"=r" (val));
46 #define NOP __asm__ __volatile__ ("nop");
48 /* use machine status registe USE_MSR_REG */
49 #if XILINX_USE_MSR_INSTR == 1
51 __asm__ __volatile__ ("msrset r0," #val );
54 __asm__ __volatile__ ("msrclr r0," #val );
59 register unsigned tmp; \
60 __asm__ __volatile__ (" \
72 register unsigned tmp; \
73 __asm__ __volatile__ (" \
75 andi %0, %0, ~"#val"; \