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