1 // SPDX-License-Identifier: GPL-2.0-only 2 // Copyright (C) 2021-2 ARM Limited. 3 // Original author: Mark Brown <broonie@kernel.org> 4 5 #ifndef SME_INST_H 6 #define SME_INST_H 7 8 /* 9 * RDSVL X\nx, #\imm 10 */ 11 .macro rdsvl nx, imm 12 .inst 0x4bf5800 \ 13 | (\imm << 5) \ 14 | (\nx) 15 .endm 16 17 .macro smstop 18 msr S0_3_C4_C6_3, xzr 19 .endm 20 21 .macro smstart_za 22 msr S0_3_C4_C5_3, xzr 23 .endm 24 25 .macro smstart_sm 26 msr S0_3_C4_C3_3, xzr 27 .endm 28 29 /* 30 * LDR (vector to ZA array): 31 * LDR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL] 32 */ 33 .macro _ldr_za nw, nxbase, offset=0 34 .inst 0xe1000000 \ 35 | (((\nw) & 3) << 13) \ 36 | ((\nxbase) << 5) \ 37 | ((\offset) & 7) 38 .endm 39 40 /* 41 * STR (vector from ZA array): 42 * STR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL] 43 */ 44 .macro _str_za nw, nxbase, offset=0 45 .inst 0xe1200000 \ 46 | (((\nw) & 3) << 13) \ 47 | ((\nxbase) << 5) \ 48 | ((\offset) & 7) 49 .endm 50 51 /* 52 * LDR (ZT0) 53 * 54 * LDR ZT0, nx 55 */ 56 .macro _ldr_zt nx 57 .inst 0xe11f8000 \ 58 | (((\nx) & 0x1f) << 5) 59 .endm 60 61 /* 62 * STR (ZT0) 63 * 64 * STR ZT0, nx 65 */ 66 .macro _str_zt nx 67 .inst 0xe13f8000 \ 68 | (((\nx) & 0x1f) << 5) 69 .endm 70 71 #endif 72