From 641f52789a392f6370195003a04d6e674878628d Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Tue, 13 Feb 2024 12:15:24 -0600 Subject: rtl/core/cp15: implement thread-local CP15 registers (from v7 spec), required for Linux SMP --- rtl/core/core_cp15.sv | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'rtl/core/core_cp15.sv') diff --git a/rtl/core/core_cp15.sv b/rtl/core/core_cp15.sv index 09b899a..c009dce 100644 --- a/rtl/core/core_cp15.sv +++ b/rtl/core/core_cp15.sv @@ -33,7 +33,8 @@ module core_cp15 assign load = dec.load; word read_cpuid, read_syscfg, read_ttbr, read_domain, read_far, - read_fsr, read_cache_lockdown, read_tlb_lockdown, read_cyclecnt; + read_fsr, read_cache_lockdown, read_tlb_lockdown, read_pid, + read_cyclecnt; core_cp15_cpuid cpuid ( @@ -102,6 +103,13 @@ module core_cp15 .* ); + core_cp15_pid pid + ( + .read(read_pid), + .transfer(transfer && crn == `CP15_CRN_PID), + .* + ); + core_cp15_cyclecnt cyclecnt ( .read(read_cyclecnt), @@ -134,6 +142,9 @@ module core_cp15 `CP15_CRN_TLB_LCK: read = read_tlb_lockdown; + `CP15_CRN_PID: + read = read_pid; + `CP15_CRN_CYCLECNT: read = read_cyclecnt; -- cgit v1.2.3