Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / arch / m68k / include / asm / movs.h
blob67dbea36960fb3a7e2ba369312248285a7267143
1 #ifndef __MOVS_H__
2 #define __MOVS_H__
4 /*
5 ** movs.h
6 **
7 ** Inline assembly macros to generate movs & related instructions
8 */
10 /* Set DFC register value */
12 #define SET_DFC(x) \
13 __asm__ __volatile__ (" movec %0,%/dfc" : : "d" (x));
15 /* Get DFC register value */
17 #define GET_DFC(x) \
18 __asm__ __volatile__ (" movec %/dfc, %0" : "=d" (x) : );
20 /* Set SFC register value */
22 #define SET_SFC(x) \
23 __asm__ __volatile__ (" movec %0,%/sfc" : : "d" (x));
25 /* Get SFC register value */
27 #define GET_SFC(x) \
28 __asm__ __volatile__ (" movec %/sfc, %0" : "=d" (x) : );
30 #define SET_VBR(x) \
31 __asm__ __volatile__ (" movec %0,%/vbr" : : "r" (x));
33 #define GET_VBR(x) \
34 __asm__ __volatile__ (" movec %/vbr, %0" : "=g" (x) : );
36 /* Set a byte using the "movs" instruction */
38 #define SET_CONTROL_BYTE(addr,value) \
39 __asm__ __volatile__ (" movsb %0, %1@" : : "d" (value), "a" (addr));
41 /* Get a byte using the "movs" instruction */
43 #define GET_CONTROL_BYTE(addr,value) \
44 __asm__ __volatile__ (" movsb %1@, %0" : "=d" (value) : "a" (addr));
46 /* Set a (long)word using the "movs" instruction */
48 #define SET_CONTROL_WORD(addr,value) \
49 __asm__ __volatile__ (" movsl %0, %1@" : : "d" (value), "a" (addr));
51 /* Get a (long)word using the "movs" instruction */
53 #define GET_CONTROL_WORD(addr,value) \
54 __asm__ __volatile__ (" movsl %1@, %0" : "=d" (value) : "a" (addr));
55 #endif