xref: /linux/arch/arm/kernel/iwmmxt.h (revision 24bce201d79807b668bf9d9e0aca801c5c0d5f78)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 #ifndef __IWMMXT_H__
4 #define __IWMMXT_H__
5 
6 .irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
7 .set .LwR\b, \b
8 .set .Lr\b, \b
9 .endr
10 
11 .set .LwCSSF, 0x2
12 .set .LwCASF, 0x3
13 .set .LwCGR0, 0x8
14 .set .LwCGR1, 0x9
15 .set .LwCGR2, 0xa
16 .set .LwCGR3, 0xb
17 
18 .macro wldrd, reg:req, base:req, offset:req
19 .inst 0xedd00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2)
20 .endm
21 
22 .macro wldrw, reg:req, base:req, offset:req
23 .inst 0xfd900100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2)
24 .endm
25 
26 .macro wstrd, reg:req, base:req, offset:req
27 .inst 0xedc00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2)
28 .endm
29 
30 .macro wstrw, reg:req, base:req, offset:req
31 .inst 0xfd800100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2)
32 .endm
33 
34 #ifdef __clang__
35 
36 #define wCon c1
37 
38 .macro tmrc, dest:req, control:req
39 mrc p1, 0, \dest, \control, c0, 0
40 .endm
41 
42 .macro tmcr, control:req, src:req
43 mcr p1, 0, \src, \control, c0, 0
44 .endm
45 #endif
46 
47 #endif
48