1 #ifndef __MOVS_H__ 2 #define __MOVS_H__ 3 4 /* 5 ** movs.h 6 ** 7 ** Inline assembly macros to generate movs & related instructions 8 */ 9 10 /* Set DFC register value */ 11 12 #define SET_DFC(x) \ 13 __asm__ __volatile__ (" movec %0,%/dfc" : : "d" (x)); 14 15 /* Get DFC register value */ 16 17 #define GET_DFC(x) \ 18 __asm__ __volatile__ (" movec %/dfc, %0" : "=d" (x) : ); 19 20 /* Set SFC register value */ 21 22 #define SET_SFC(x) \ 23 __asm__ __volatile__ (" movec %0,%/sfc" : : "d" (x)); 24 25 /* Get SFC register value */ 26 27 #define GET_SFC(x) \ 28 __asm__ __volatile__ (" movec %/sfc, %0" : "=d" (x) : ); 29 30 #define SET_VBR(x) \ 31 __asm__ __volatile__ (" movec %0,%/vbr" : : "r" (x)); 32 33 #define GET_VBR(x) \ 34 __asm__ __volatile__ (" movec %/vbr, %0" : "=g" (x) : ); 35 36 /* Set a byte using the "movs" instruction */ 37 38 #define SET_CONTROL_BYTE(addr,value) \ 39 __asm__ __volatile__ (" movsb %0, %1@" : : "d" (value), "a" (addr)); 40 41 /* Get a byte using the "movs" instruction */ 42 43 #define GET_CONTROL_BYTE(addr,value) \ 44 __asm__ __volatile__ (" movsb %1@, %0" : "=d" (value) : "a" (addr)); 45 46 /* Set a (long)word using the "movs" instruction */ 47 48 #define SET_CONTROL_WORD(addr,value) \ 49 __asm__ __volatile__ (" movsl %0, %1@" : : "d" (value), "a" (addr)); 50 51 /* Get a (long)word using the "movs" instruction */ 52 53 #define GET_CONTROL_WORD(addr,value) \ 54 __asm__ __volatile__ (" movsl %1@, %0" : "=d" (value) : "a" (addr)); 55 #endif 56