| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright (C) 2024 ARM Limited | |
| * | |
| * Common helper functions for SVE and SME functionality. | |
| */ | |
| #ifndef __SVE_HELPERS_H__ | |
| #define __SVE_HELPERS_H__ | |
| #include <stdbool.h> | |
| #define VLS_USE_SVE false | |
| #define VLS_USE_SME true | |
| extern unsigned int vls[]; | |
| extern unsigned int nvls; | |
| int sve_fill_vls(bool use_sme, int min_vls); | |
| static inline uint64_t get_svcr(void) | |
| { | |
| uint64_t val; | |
| asm volatile ( | |
| "mrs %0, S3_3_C4_C2_2\n" | |
| : "=r"(val) | |
| : | |
| : "cc"); | |
| return val; | |
| } | |
| #endif |