xref: /aosp_15_r20/external/coreboot/src/arch/riscv/include/arch/cpu.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __ARCH_CPU_H__
4 #define __ARCH_CPU_H__
5 
6 #include <arch/encoding.h>
7 #include <device/device.h>
8 
cpu_relax(void)9 static inline void cpu_relax(void) { }
10 
11 #define asmlinkage
12 
13 struct cpu_driver {
14 	struct device_operations *ops;
15 	const struct cpu_device_id *id_table;
16 };
17 
18 struct cpuinfo_riscv {
19 	uint8_t    riscv;            /* CPU family */
20 	uint8_t    riscv_vendor;     /* CPU vendor */
21 	uint8_t    riscv_model;
22 };
23 
supports_extension(char ext)24 static inline int supports_extension(char ext)
25 {
26 	return read_csr(misa) & (1 << (ext - 'A'));
27 }
28 
machine_xlen(void)29 static inline int machine_xlen(void)
30 {
31 	int mxl = (read_csr(misa) >> (__riscv_xlen - 2)) & 3;
32 	return (1 << mxl) * 16;
33 }
34 
35 #endif /* __ARCH_CPU_H__ */
36