From ad19ffe629d9f16b8fd07051ce73533e97fb3f5c Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Wed, 3 Sep 2014 13:19:46 -0500 Subject: [PATCH] arm64: add midr_el1 accessor function Provide access to the MIDR_EL1 register to obtain the main id for determining CPU implementer and part/revision information. BUG=chrome-os-partner:31761 BRANCH=None TEST=Built and printed the output of this function on ryu. Change-Id: I8b8506ebff8e6f9d7c4f96d7ff7e21803972961e Signed-off-by: Aaron Durbin Reviewed-on: https://chromium-review.googlesource.com/216423 Reviewed-by: Furquan Shaikh --- src/arch/arm64/armv8/lib/sysctrl.c | 10 ++++++++++ src/arch/arm64/include/armv8/arch/lib_helpers.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/arch/arm64/armv8/lib/sysctrl.c b/src/arch/arm64/armv8/lib/sysctrl.c index 7e06e29658..063588b44d 100644 --- a/src/arch/arm64/armv8/lib/sysctrl.c +++ b/src/arch/arm64/armv8/lib/sysctrl.c @@ -530,6 +530,16 @@ void raw_write_mair_current(uint64_t mair) SWITCH_CASE_WRITE(raw_write_mair,mair); } +/* MIDR */ +uint32_t raw_read_midr_el1(void) +{ + uint32_t midr_el1; + + __asm__ __volatile__("mrs %0, MIDR_EL1\n\t" : "=r" (midr_el1) : : "memory"); + + return midr_el1; +} + /* MPIDR */ uint64_t raw_read_mpidr_el1(void) { diff --git a/src/arch/arm64/include/armv8/arch/lib_helpers.h b/src/arch/arm64/include/armv8/arch/lib_helpers.h index c53462c6ae..afda4bddc5 100644 --- a/src/arch/arm64/include/armv8/arch/lib_helpers.h +++ b/src/arch/arm64/include/armv8/arch/lib_helpers.h @@ -222,6 +222,7 @@ uint64_t raw_read_mair_el3(void); void raw_write_mair_el3(uint64_t mair_el3); uint64_t raw_read_mair_current(void); void raw_write_mair_current(uint64_t mair); +uint32_t raw_read_midr_el1(void); uint64_t raw_read_mpidr_el1(void); uint32_t raw_read_rmr_el1(void); void raw_write_rmr_el1(uint32_t rmr_el1);