52 lines
880 B
C
52 lines
880 B
C
|
// SPDX-License-Identifier: GPL-2.0-only
|
||
|
// Copyright (C) 2021-2 ARM Limited.
|
||
|
// Original author: Mark Brown <broonie@kernel.org>
|
||
|
|
||
|
#ifndef SME_INST_H
|
||
|
#define SME_INST_H
|
||
|
|
||
|
/*
|
||
|
* RDSVL X\nx, #\imm
|
||
|
*/
|
||
|
.macro rdsvl nx, imm
|
||
|
.inst 0x4bf5800 \
|
||
|
| (\imm << 5) \
|
||
|
| (\nx)
|
||
|
.endm
|
||
|
|
||
|
.macro smstop
|
||
|
msr S0_3_C4_C6_3, xzr
|
||
|
.endm
|
||
|
|
||
|
.macro smstart_za
|
||
|
msr S0_3_C4_C5_3, xzr
|
||
|
.endm
|
||
|
|
||
|
.macro smstart_sm
|
||
|
msr S0_3_C4_C3_3, xzr
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* LDR (vector to ZA array):
|
||
|
* LDR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
|
||
|
*/
|
||
|
.macro _ldr_za nw, nxbase, offset=0
|
||
|
.inst 0xe1000000 \
|
||
|
| (((\nw) & 3) << 13) \
|
||
|
| ((\nxbase) << 5) \
|
||
|
| ((\offset) & 7)
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* STR (vector from ZA array):
|
||
|
* STR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
|
||
|
*/
|
||
|
.macro _str_za nw, nxbase, offset=0
|
||
|
.inst 0xe1200000 \
|
||
|
| (((\nw) & 3) << 13) \
|
||
|
| ((\nxbase) << 5) \
|
||
|
| ((\offset) & 7)
|
||
|
.endm
|
||
|
|
||
|
#endif
|