aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2015-03-27 22:52:18 -0700
committerPatrick Georgi <pgeorgi@google.com>2015-04-22 08:54:35 +0200
commit55aa17b74410a177db34e7a99e0283c1fbd2903e (patch)
treedfeb9c078f85e273ffeebeb5fd9e8732233d04a7 /src/arch
parent23dddd5bd3a5f9cebc9a4efc04d73e869dadae96 (diff)
downloadcoreboot-55aa17b74410a177db34e7a99e0283c1fbd2903e.tar.gz
coreboot-55aa17b74410a177db34e7a99e0283c1fbd2903e.tar.xz
coreboot-55aa17b74410a177db34e7a99e0283c1fbd2903e.zip
arm64: Correct shareability option for normal memory
In order to allow proper working of caches, set the correct shareability option for normal memory. BUG=chrome-os-partner:38222 BRANCH=None TEST=Compiles successfully for foster and SMP works. Change-Id: I5462cb0a2ff94a854f71f58709d7b2e8297ccc44 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: e092916780716ac80c3608c1bd8ca2901fbb3bd1 Original-Change-Id: Idd3c096a004d76a8fd75df2a884fcb97130d0006 Original-Signed-off-by: Furquan Shaikh <furquan@google.com> Original-Reviewed-on: https://chromium-review.googlesource.com/262992 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Original-Tested-by: Furquan Shaikh <furquan@chromium.org> Original-Trybot-Ready: Furquan Shaikh <furquan@chromium.org> Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org> Reviewed-on: http://review.coreboot.org/9898 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm64/armv8/mmu.c1
-rw-r--r--src/arch/arm64/include/armv8/arch/mmu.h6
2 files changed, 7 insertions, 0 deletions
diff --git a/src/arch/arm64/armv8/mmu.c b/src/arch/arm64/armv8/mmu.c
index 8fde41f7f..84b9935a9 100644
--- a/src/arch/arm64/armv8/mmu.c
+++ b/src/arch/arm64/armv8/mmu.c
@@ -67,6 +67,7 @@ static uint64_t get_block_attr(unsigned long tag)
attr |= BLOCK_ACCESS;
if (tag & MA_MEM) {
+ attr |= BLOCK_SH_INNER_SHAREABLE;
if (tag & MA_MEM_NC)
attr |= BLOCK_INDEX_MEM_NORMAL_NC << BLOCK_INDEX_SHIFT;
else
diff --git a/src/arch/arm64/include/armv8/arch/mmu.h b/src/arch/arm64/include/armv8/arch/mmu.h
index a030b1bf7..564d6afed 100644
--- a/src/arch/arm64/include/armv8/arch/mmu.h
+++ b/src/arch/arm64/include/armv8/arch/mmu.h
@@ -65,6 +65,12 @@
#define BLOCK_ACCESS (1 << 10)
+#define BLOCK_SH_SHIFT (8)
+#define BLOCK_SH_NON_SHAREABLE (0 << BLOCK_SH_SHIFT)
+#define BLOCK_SH_UNPREDICTABLE (1 << BLOCK_SH_SHIFT)
+#define BLOCK_SH_OUTER_SHAREABLE (2 << BLOCK_SH_SHIFT)
+#define BLOCK_SH_INNER_SHAREABLE (3 << BLOCK_SH_SHIFT)
+
/* XLAT Table Init Attributes */
#define VA_START 0x0