Linux Audio

Check our new training course

Linux kernel drivers training

Mar 31-Apr 9, 2025, special US time zones
Register
Loading...
v6.13.7
 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
v3.1
 
 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