72 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2// Copyright (C) 2021-2 ARM Limited.3// Original author: Mark Brown <broonie@kernel.org>4 5#ifndef SME_INST_H6#define SME_INST_H7 8/*9 * RDSVL X\nx, #\imm10 */11.macro rdsvl nx, imm12 .inst 0x4bf5800 \13 | (\imm << 5) \14 | (\nx)15.endm16 17.macro smstop18 msr S0_3_C4_C6_3, xzr19.endm20 21.macro smstart_za22 msr S0_3_C4_C5_3, xzr23.endm24 25.macro smstart_sm26 msr S0_3_C4_C3_3, xzr27.endm28 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=034 .inst 0xe1000000 \35 | (((\nw) & 3) << 13) \36 | ((\nxbase) << 5) \37 | ((\offset) & 7)38.endm39 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=045 .inst 0xe1200000 \46 | (((\nw) & 3) << 13) \47 | ((\nxbase) << 5) \48 | ((\offset) & 7)49.endm50 51/*52 * LDR (ZT0)53 *54 * LDR ZT0, nx55 */56.macro _ldr_zt nx57 .inst 0xe11f8000 \58 | (((\nx) & 0x1f) << 5)59.endm60 61/*62 * STR (ZT0)63 *64 * STR ZT0, nx65 */66.macro _str_zt nx67 .inst 0xe13f8000 \68 | (((\nx) & 0x1f) << 5)69.endm70 71#endif72