xref: /qemu/tests/tcg/aarch64/system/feat-xs.c (revision 877fad2a3e1a76fa3f9508b26858c6e659cc728f)
1*daae2280SManos Pitsidianakis /*
2*daae2280SManos Pitsidianakis  * FEAT_XS Test
3*daae2280SManos Pitsidianakis  *
4*daae2280SManos Pitsidianakis  * Copyright (c) 2024 Linaro Ltd
5*daae2280SManos Pitsidianakis  *
6*daae2280SManos Pitsidianakis  * SPDX-License-Identifier: GPL-2.0-or-later
7*daae2280SManos Pitsidianakis  */
8*daae2280SManos Pitsidianakis 
9*daae2280SManos Pitsidianakis #include <minilib.h>
10*daae2280SManos Pitsidianakis #include <stdint.h>
11*daae2280SManos Pitsidianakis 
main(void)12*daae2280SManos Pitsidianakis int main(void)
13*daae2280SManos Pitsidianakis {
14*daae2280SManos Pitsidianakis     uint64_t isar1;
15*daae2280SManos Pitsidianakis 
16*daae2280SManos Pitsidianakis     asm volatile ("mrs %0, id_aa64isar1_el1" : "=r"(isar1));
17*daae2280SManos Pitsidianakis     if (((isar1 >> 56) & 0xf) < 1) {
18*daae2280SManos Pitsidianakis         ml_printf("FEAT_XS not supported by CPU");
19*daae2280SManos Pitsidianakis         return 1;
20*daae2280SManos Pitsidianakis     }
21*daae2280SManos Pitsidianakis     /* VMALLE1NXS */
22*daae2280SManos Pitsidianakis     asm volatile (".inst 0xd508971f");
23*daae2280SManos Pitsidianakis     /* VMALLE1OSNXS */
24*daae2280SManos Pitsidianakis     asm volatile (".inst 0xd508911f");
25*daae2280SManos Pitsidianakis 
26*daae2280SManos Pitsidianakis     return 0;
27*daae2280SManos Pitsidianakis }
28