Add programs sve-test and fpsimd-test which spin reading and writing to the SVE and FPSIMD registers, verifying the operations they perform. The intended use is to leave them running to stress the context switch code's handling of these registers which isn't compatible with what kselftest does so they're not integrated into the framework but there's no other obvious testsuite where they fit so let's store them here. These tests were written by Dave Martin and lightly adapted by me. Signed-off-by: Mark Brown <broonie@kernel.org> Acked-by: Dave Martin <Dave.Martin@arm.com> Acked-by: Shuah Khan <skhan@linuxfoundation.org> Link: https://lore.kernel.org/r/20200819114837.51466-4-broonie@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
58 lines
969 B
C
58 lines
969 B
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
// Copyright (C) 2015-2019 ARM Limited.
|
|
// Original author: Dave Martin <Dave.Martin@arm.com>
|
|
|
|
#ifndef ASSEMBLER_H
|
|
#define ASSEMBLER_H
|
|
|
|
.macro __for from:req, to:req
|
|
.if (\from) == (\to)
|
|
_for__body %\from
|
|
.else
|
|
__for \from, %(\from) + ((\to) - (\from)) / 2
|
|
__for %(\from) + ((\to) - (\from)) / 2 + 1, \to
|
|
.endif
|
|
.endm
|
|
|
|
.macro _for var:req, from:req, to:req, insn:vararg
|
|
.macro _for__body \var:req
|
|
.noaltmacro
|
|
\insn
|
|
.altmacro
|
|
.endm
|
|
|
|
.altmacro
|
|
__for \from, \to
|
|
.noaltmacro
|
|
|
|
.purgem _for__body
|
|
.endm
|
|
|
|
.macro function name
|
|
.macro endfunction
|
|
.type \name, @function
|
|
.purgem endfunction
|
|
.endm
|
|
\name:
|
|
.endm
|
|
|
|
.macro define_accessor name, num, insn
|
|
.macro \name\()_entry n
|
|
\insn \n, 1
|
|
ret
|
|
.endm
|
|
|
|
function \name
|
|
adr x2, .L__accessor_tbl\@
|
|
add x2, x2, x0, lsl #3
|
|
br x2
|
|
|
|
.L__accessor_tbl\@:
|
|
_for x, 0, (\num) - 1, \name\()_entry \x
|
|
endfunction
|
|
|
|
.purgem \name\()_entry
|
|
.endm
|
|
|
|
#endif /* ! ASSEMBLER_H */
|