Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/include/cpu.h
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | |||||
#define cpu_getstack(td) ((td)->td_frame->tf_sp) | #define cpu_getstack(td) ((td)->td_frame->tf_sp) | ||||
#define cpu_setstack(td, sp) ((td)->td_frame->tf_sp = (sp)) | #define cpu_setstack(td, sp) ((td)->td_frame->tf_sp = (sp)) | ||||
#define cpu_spinwait() /* nothing */ | #define cpu_spinwait() /* nothing */ | ||||
#define cpu_lock_delay() DELAY(1) | #define cpu_lock_delay() DELAY(1) | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
/* | /* | ||||
* 0x0000 CPU ID unimplemented | * Core manufacturer IDs, as reported by the mvendorid CSR. | ||||
* 0x0001 UC Berkeley Rocket repo | |||||
* 0x00020x7FFE Reserved for open-source repos | |||||
* 0x7FFF Reserved for extension | |||||
* 0x8000 Reserved for anonymous source | |||||
* 0x80010xFFFE Reserved for proprietary implementations | |||||
* 0xFFFF Reserved for extension | |||||
*/ | */ | ||||
#define MVENDORID_UNIMPL 0x0 | |||||
#define MVENDORID_SIFIVE 0x489 | |||||
#define MVENDORID_THEAD 0x5b7 | |||||
#define CPU_IMPL_SHIFT 0 | /* | ||||
#define CPU_IMPL_MASK (0xffff << CPU_IMPL_SHIFT) | * Micro-architecture ID register, marchid. | ||||
#define CPU_IMPL(mimpid) ((mimpid & CPU_IMPL_MASK) >> CPU_IMPL_SHIFT) | * | ||||
#define CPU_IMPL_UNIMPLEMEN 0x0 | * IDs for open-source implementations are allocated globally. Commercial IDs | ||||
#define CPU_IMPL_UCB_ROCKET 0x1 | * will have the most-significant bit set. | ||||
*/ | |||||
#define MARCHID_UNIMPL 0x0 | |||||
#define MARCHID_MSB (1ul << (XLEN - 1)) | |||||
#define MARCHID_OPENSOURCE(v) (v) | |||||
#define MARCHID_COMMERCIAL(v) (MARCHID_MSB | (v)) | |||||
#define MARCHID_IS_OPENSOURCE(m) (((m) & MARCHID_MSB) == 0) | |||||
#define CPU_PART_SHIFT 62 | /* | ||||
#define CPU_PART_MASK (0x3ul << CPU_PART_SHIFT) | * Open-source marchid values. | ||||
#define CPU_PART(misa) ((misa & CPU_PART_MASK) >> CPU_PART_SHIFT) | * | ||||
#define CPU_PART_RV32 0x1 | * https://github.com/riscv/riscv-isa-manual/blob/master/marchid.md | ||||
#define CPU_PART_RV64 0x2 | */ | ||||
#define CPU_PART_RV128 0x3 | #define MARCHID_UCB_ROCKET MARCHID_OPENSOURCE(1) | ||||
#define MARCHID_UCB_BOOM MARCHID_OPENSOURCE(2) | |||||
#define MARCHID_UCB_SPIKE MARCHID_OPENSOURCE(5) | |||||
#define MARCHID_UCAM_RVBS MARCHID_OPENSOURCE(10) | |||||
jrtc27: UCAM would be a more helpful abbreviation (and one that the University uses) lest it be… | |||||
/* SiFive marchid values */ | |||||
#define MARCHID_SIFIVE_U7 MARCHID_COMMERCIAL(7) | |||||
extern char btext[]; | extern char btext[]; | ||||
extern char etext[]; | extern char etext[]; | ||||
void cpu_halt(void) __dead2; | void cpu_halt(void) __dead2; | ||||
void cpu_reset(void) __dead2; | void cpu_reset(void) __dead2; | ||||
void fork_trampoline(void); | void fork_trampoline(void); | ||||
void identify_cpu(void); | void identify_cpu(void); | ||||
Show All 11 Lines |
UCAM would be a more helpful abbreviation (and one that the University uses) lest it be confused with the University of California as a whole