diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2014-08-08 07:51:39 -0400 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2014-09-08 09:39:18 -0400 |
commit | 80c517b0ff71a4c874fed9196fd990d2d9e911f3 (patch) | |
tree | cd8df96023742759d214a0a2c1bc02680a2f35be /arch/arm64/kernel/cpuinfo.c | |
parent | 2ce7598c9a453e0acd0e07be7be3f5eb39608ebd (diff) |
arm64: add helper functions to read I-cache attributes
This adds helper functions and #defines to <asm/cachetype.h> to read the
line size and the number of sets from the level 1 instruction cache.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/cpuinfo.c')
-rw-r--r-- | arch/arm64/kernel/cpuinfo.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index 177169623026..d8c5a59a5687 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c | |||
@@ -20,8 +20,10 @@ | |||
20 | #include <asm/cputype.h> | 20 | #include <asm/cputype.h> |
21 | 21 | ||
22 | #include <linux/bitops.h> | 22 | #include <linux/bitops.h> |
23 | #include <linux/bug.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
26 | #include <linux/preempt.h> | ||
25 | #include <linux/printk.h> | 27 | #include <linux/printk.h> |
26 | #include <linux/smp.h> | 28 | #include <linux/smp.h> |
27 | 29 | ||
@@ -190,3 +192,15 @@ void __init cpuinfo_store_boot_cpu(void) | |||
190 | 192 | ||
191 | boot_cpu_data = *info; | 193 | boot_cpu_data = *info; |
192 | } | 194 | } |
195 | |||
196 | u64 __attribute_const__ icache_get_ccsidr(void) | ||
197 | { | ||
198 | u64 ccsidr; | ||
199 | |||
200 | WARN_ON(preemptible()); | ||
201 | |||
202 | /* Select L1 I-cache and read its size ID register */ | ||
203 | asm("msr csselr_el1, %1; isb; mrs %0, ccsidr_el1" | ||
204 | : "=r"(ccsidr) : "r"(1L)); | ||
205 | return ccsidr; | ||
206 | } | ||