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
 |