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