summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2017-01-08 17:31:47 -0600
committerMichael Ellerman <mpe@ellerman.id.au>2017-02-06 19:46:04 +1100
commite2827fe5c1566f66a922dd7493cbe4522c50580a (patch)
tree49c4d659ade2f43d88a8b7a62f3c14f21aafef0c /arch/powerpc/include/asm
parent5d451a87e5ebbde18c2b48284778f29d308816c2 (diff)
downloadop-kernel-dev-e2827fe5c1566f66a922dd7493cbe4522c50580a.zip
op-kernel-dev-e2827fe5c1566f66a922dd7493cbe4522c50580a.tar.gz
powerpc/64: Clean up ppc64_caches using a struct per cache
We have two set of identical struct members for the I and D sides and mostly identical bunches of code to parse the device-tree to populate them. Instead make a ppc_cache_info structure with one copy for I and one for D Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r--arch/powerpc/include/asm/cache.h24
-rw-r--r--arch/powerpc/include/asm/page_64.h4
2 files changed, 14 insertions, 14 deletions
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
index 1fa3643..823750f 100644
--- a/arch/powerpc/include/asm/cache.h
+++ b/arch/powerpc/include/asm/cache.h
@@ -30,19 +30,19 @@
#define IFETCH_ALIGN_BYTES (1 << IFETCH_ALIGN_SHIFT)
#if defined(__powerpc64__) && !defined(__ASSEMBLY__)
+
+struct ppc_cache_info {
+ u32 size;
+ u32 line_size;
+ u32 block_size; /* L1 only */
+ u32 log_block_size;
+ u32 blocks_per_page;
+ u32 sets;
+};
+
struct ppc64_caches {
- u32 dsize; /* L1 d-cache size */
- u32 dline_size; /* L1 d-cache line size */
- u32 dblock_size; /* L1 d-cache block size */
- u32 log_dblock_size;
- u32 dblocks_per_page;
- u32 dsets;
- u32 isize; /* L1 i-cache size */
- u32 iline_size; /* L1 d-cache line size */
- u32 iblock_size; /* L1 i-cache block size */
- u32 log_iblock_size;
- u32 iblocks_per_page;
- u32 isets;
+ struct ppc_cache_info l1d;
+ struct ppc_cache_info l1i;
};
extern struct ppc64_caches ppc64_caches;
diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
index c50a666..3e83d2a 100644
--- a/arch/powerpc/include/asm/page_64.h
+++ b/arch/powerpc/include/asm/page_64.h
@@ -47,14 +47,14 @@ static inline void clear_page(void *addr)
unsigned long iterations;
unsigned long onex, twox, fourx, eightx;
- iterations = ppc64_caches.dblocks_per_page / 8;
+ iterations = ppc64_caches.l1d.blocks_per_page / 8;
/*
* Some verisions of gcc use multiply instructions to
* calculate the offsets so lets give it a hand to
* do better.
*/
- onex = ppc64_caches.dblock_size;
+ onex = ppc64_caches.l1d.block_size;
twox = onex << 1;
fourx = onex << 2;
eightx = onex << 3;
OpenPOWER on IntegriCloud