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)9static 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)24static inline int supports_extension(char ext) 25 { 26 return read_csr(misa) & (1 << (ext - 'A')); 27 } 28 machine_xlen(void)29static 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