7 ** Inline assembly macros to generate movs & related instructions
10 /* Set DFC register value */
13 __asm__ __volatile__ ("movec %0,%%dfc" : : "r" (x))
15 /* Get DFC register value */
18 __asm__ __volatile__ ("movec %%dfc,%0" : "=r" (x))
20 /* Set SFC register value */
23 __asm__ __volatile__ ("movec %0,%%sfc" : : "r" (x))
25 /* Get SFC register value */
28 __asm__ __volatile__ ("movec %%sfc,%0" : "=r" (x))
31 __asm__ __volatile__ ("movec %0,%%vbr" : : "r" (x))
34 __asm__ __volatile__ ("movec %%vbr,%0" : "=r" (x))
36 /* Set a byte using the "moves" instruction */
38 #define SET_CONTROL_BYTE(addr,value) \
39 __asm__ __volatile__ ("movesb %1,%0" : "=m" (addr) : "d" (value))
41 /* Get a byte using the "moves" instruction */
43 #define GET_CONTROL_BYTE(addr,value) \
44 __asm__ __volatile__ ("movesb %1,%0" : "=d" (value) : "m" (addr))
46 /* Set a (long)word using the "moves" instruction */
48 #define SET_CONTROL_WORD(addr,value) \
49 __asm__ __volatile__ ("movesl %1,%0" : "=m" (addr) : "r" (value))
51 /* Get a (long)word using the "moves" instruction */
53 #define GET_CONTROL_WORD(addr,value) \
54 __asm__ __volatile__ ("movesl %1,%0" : "=d" (value) : "m" (addr))