Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 // Copyright (C) 2021-2 ARM Limited.
0003 // Original author: Mark Brown <broonie@kernel.org>
0004 
0005 #ifndef SME_INST_H
0006 #define SME_INST_H
0007 
0008 /*
0009  * RDSVL X\nx, #\imm
0010  */
0011 .macro rdsvl nx, imm
0012     .inst   0x4bf5800           \
0013         | (\imm << 5)           \
0014         | (\nx)
0015 .endm
0016 
0017 .macro smstop
0018     msr S0_3_C4_C6_3, xzr
0019 .endm
0020 
0021 .macro smstart_za
0022     msr S0_3_C4_C5_3, xzr
0023 .endm
0024 
0025 .macro smstart_sm
0026     msr S0_3_C4_C3_3, xzr
0027 .endm
0028 
0029 /*
0030  * LDR (vector to ZA array):
0031  *  LDR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
0032  */
0033 .macro _ldr_za nw, nxbase, offset=0
0034     .inst   0xe1000000          \
0035         | (((\nw) & 3) << 13)       \
0036         | ((\nxbase) << 5)      \
0037         | ((\offset) & 7)
0038 .endm
0039 
0040 /*
0041  * STR (vector from ZA array):
0042  *  STR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
0043  */
0044 .macro _str_za nw, nxbase, offset=0
0045     .inst   0xe1200000          \
0046         | (((\nw) & 3) << 13)       \
0047         | ((\nxbase) << 5)      \
0048         | ((\offset) & 7)
0049 .endm
0050 
0051 #endif