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 #endif 52