linux/arch/m68k/include/asm/movs.h
<<
>>
Prefs
   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