Stefan Reinauer (stefan.reinauer@coreboot.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14919
-gerrit
commit 621aba1eb3db0efb09431c826dbe16e2ef7f7a11 Author: Akshay Saraswat akshay.s@samsung.com Date: Thu Oct 9 17:10:30 2014 +0530
ARM64: Add lib helper functions for L2CTRL and L2ACTLR
Adding few more lib helper function definitions to get and set L2 Control and L2 Auxiliary Control registers.
BUG=None BRANCH=None TEST=None
Change-Id: Ie8a3d4ef3ec685264bde330b3563630a141fdffa Signed-off-by: Akshay Saraswat akshay.s@samsung.com --- src/arch/arm64/armv8/lib/sysctrl.c | 32 +++++++++++++++++++++++++ src/arch/arm64/include/armv8/arch/lib_helpers.h | 4 ++++ 2 files changed, 36 insertions(+)
diff --git a/src/arch/arm64/armv8/lib/sysctrl.c b/src/arch/arm64/armv8/lib/sysctrl.c index e349a25..0ce3dcf 100644 --- a/src/arch/arm64/armv8/lib/sysctrl.c +++ b/src/arch/arm64/armv8/lib/sysctrl.c @@ -1060,4 +1060,36 @@ void raw_write_cntfrq_el0(uint32_t cntfrq_el0) { __asm__ __volatile__("msr CNTFRQ_EL0, %0\n\t" : : "r" (cntfrq_el0) : "memory"); +/* L2CTLR */ +uint32_t raw_read_l2ctlr_el1(void) +{ + uint32_t l2ctlr_el1; + + __asm__ __volatile__("mrs %0, S3_1_c11_c0_2\n\t" + : "=r" (l2ctlr_el1) : : "memory"); + + return l2ctlr_el1; +} + +void raw_write_l2ctlr_el1(uint32_t l2ctlr_el1) +{ + __asm__ __volatile__("msr S3_1_c11_c0_2, %0\n\t" + : : "r" (l2ctlr_el1) : "memory"); +} + +/* L2ACTLR */ +uint32_t raw_read_l2actlr_el1(void) +{ + uint32_t l2actlr_el1; + + __asm__ __volatile__("mrs %0, s3_1_c15_c0_0\n\t" + : "=r" (l2actlr_el1) : : "memory"); + + return l2actlr_el1; +} + +void raw_write_l2actlr_el1(uint32_t l2actlr_el1) +{ + __asm__ __volatile__("msr s3_1_c15_c0_0, %0\n\t" + : : "r" (l2actlr_el1) : "memory"); } diff --git a/src/arch/arm64/include/armv8/arch/lib_helpers.h b/src/arch/arm64/include/armv8/arch/lib_helpers.h index 94078e9..4e36714 100644 --- a/src/arch/arm64/include/armv8/arch/lib_helpers.h +++ b/src/arch/arm64/include/armv8/arch/lib_helpers.h @@ -479,6 +479,10 @@ void raw_write_far(uint64_t far, uint32_t el); uint64_t raw_read_hcr_el2(void); void raw_write_hcr_el2(uint64_t hcr_el2); uint64_t raw_read_aa64pfr0_el1(void); +uint32_t raw_read_l2ctlr_el1(void); +void raw_write_l2ctlr_el1(uint32_t l2ctlr_el1); +uint32_t raw_read_l2actlr_el1(void); +void raw_write_l2actlr_el1(uint32_t l2actlr_el1); uint64_t raw_read_mair_el1(void); void raw_write_mair_el1(uint64_t mair_el1); uint64_t raw_read_mair_el2(void);