sme-inst.h (880B)
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