1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright 2022-2023 Rivos, Inc
4  */
5 
6 #ifndef _ASM_CPUFEATURE_H
7 #define _ASM_CPUFEATURE_H
8 
9 #include <linux/bitmap.h>
10 #include <asm/hwcap.h>
11 
12 /*
13  * These are probed via a device_initcall(), via either the SBI or directly
14  * from the corresponding CSRs.
15  */
16 struct riscv_cpuinfo {
17 	unsigned long mvendorid;
18 	unsigned long marchid;
19 	unsigned long mimpid;
20 };
21 
22 struct riscv_isainfo {
23 	DECLARE_BITMAP(isa, RISCV_ISA_EXT_MAX);
24 };
25 
26 DECLARE_PER_CPU(struct riscv_cpuinfo, riscv_cpuinfo);
27 
28 DECLARE_PER_CPU(long, misaligned_access_speed);
29 
30 /* Per-cpu ISA extensions. */
31 extern struct riscv_isainfo hart_isa[NR_CPUS];
32 
33 void check_unaligned_access(int cpu);
34 
35 #endif
36