1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __SELFTESTS_POWERPC_PPC_ASM_H |
3 | #define __SELFTESTS_POWERPC_PPC_ASM_H |
4 | #include <ppc-asm.h> |
5 | |
6 | #define CONFIG_ALTIVEC |
7 | |
8 | #define r1 1 |
9 | |
10 | #define R14 r14 |
11 | #define R15 r15 |
12 | #define R16 r16 |
13 | #define R17 r17 |
14 | #define R18 r18 |
15 | #define R19 r19 |
16 | #define R20 r20 |
17 | #define R21 r21 |
18 | #define R22 r22 |
19 | #define R29 r29 |
20 | #define R30 r30 |
21 | #define R31 r31 |
22 | |
23 | #define STACKFRAMESIZE 256 |
24 | #define STK_REG(i) (112 + ((i)-14)*8) |
25 | |
26 | #define _GLOBAL(A) FUNC_START(test_ ## A) |
27 | #define _GLOBAL_TOC(A) _GLOBAL(A) |
28 | #define _GLOBAL_TOC_KASAN(A) _GLOBAL(A) |
29 | #define _GLOBAL_KASAN(A) _GLOBAL(A) |
30 | #define CFUNC(name) name |
31 | |
32 | #define PPC_MTOCRF(A, B) mtocrf A, B |
33 | |
34 | #define EX_TABLE(x, y) \ |
35 | .section __ex_table,"a"; \ |
36 | .8byte x, y; \ |
37 | .previous |
38 | |
39 | #define BEGIN_FTR_SECTION .if test_feature |
40 | #define FTR_SECTION_ELSE .else |
41 | #define ALT_FTR_SECTION_END_IFCLR(x) .endif |
42 | #define ALT_FTR_SECTION_END_IFSET(x) .endif |
43 | #define ALT_FTR_SECTION_END(x, y) .endif |
44 | #define END_FTR_SECTION_IFCLR(x) .endif |
45 | #define END_FTR_SECTION_IFSET(x) .endif |
46 | |
47 | /* Default to taking the first of any alternative feature sections */ |
48 | test_feature = 1 |
49 | |
50 | #define DCBT_SETUP_STREAMS(from, from_parms, to, to_parms, scratch) \ |
51 | lis scratch,0x8000; /* GO=1 */ \ |
52 | clrldi scratch,scratch,32; \ |
53 | /* setup read stream 0 */ \ |
54 | dcbt 0,from,0b01000; /* addr from */ \ |
55 | dcbt 0,from_parms,0b01010; /* length and depth from */ \ |
56 | /* setup write stream 1 */ \ |
57 | dcbtst 0,to,0b01000; /* addr to */ \ |
58 | dcbtst 0,to_parms,0b01010; /* length and depth to */ \ |
59 | eieio; \ |
60 | dcbt 0,scratch,0b01010; /* all streams GO */ |
61 | |
62 | #endif /* __SELFTESTS_POWERPC_PPC_ASM_H */ |
63 | |