summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-09-08 10:50:08 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-09-12 10:00:23 +0200
commit0ce5bfb984724a6034be7ca8ff7f7a5b4ab39925 (patch)
tree13021fc817bd84659c4e4eace6060c6517edc971
parentbsp/qoriq: Add QORIQ_IS_HYPERVISOR_GUEST (diff)
downloadrtems-0ce5bfb984724a6034be7ca8ff7f7a5b4ab39925.tar.bz2
bsp/qoriq: Do not touch MMU as hypervisor guest
Update #3085.
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/start/start.S14
1 files changed, 12 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/start/start.S b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
index dec1f95782..ce57b201d8 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/start/start.S
+++ b/c/src/lib/libbsp/powerpc/qoriq/start/start.S
@@ -22,7 +22,7 @@
#include <rtems/score/percpu.h>
-#include <bspopts.h>
+#include <bsp.h>
#include <libcpu/powerpc-utility.h>
@@ -177,7 +177,7 @@ _start:
isync
#endif
-#ifdef QORIQ_INITIAL_HID0
+#if defined(QORIQ_INITIAL_HID0) && !defined(QORIQ_IS_HYPERVISOR_GUEST)
/* HID0 initialization */
LWI r0, QORIQ_INITIAL_HID0
mtspr HID0, r0
@@ -200,6 +200,13 @@ _start:
.Linitmore:
mflr SAVED_LINK_REGISTER
+#ifdef QORIQ_IS_HYPERVISOR_GUEST
+ /* MSR initialization with guest state */
+ LWI INITIAL_MSR, QORIQ_INITIAL_MSR
+ oris r0, INITIAL_MSR, MSR_GS >> 16
+ mtmsr r0
+ isync
+#else
/* Invalidate all TS1 MMU entries */
li r3, 1
bl qoriq_tlb1_invalidate_all_by_ts
@@ -221,6 +228,7 @@ _start:
ori r0, INITIAL_MSR, MSR_IS | MSR_DS
mtmsr r0
isync
+#endif
/*
* Initialize start stack. Make sure that we do not share a cache line
@@ -240,6 +248,7 @@ _start:
blr
.Linitmmu:
+#ifndef QORIQ_IS_HYPERVISOR_GUEST
mflr SAVED_LINK_REGISTER
/* Configure MMU */
@@ -254,6 +263,7 @@ _start:
PPC64_NOP_FOR_LINKER_TOC_POINTER_RESTORE
mtlr SAVED_LINK_REGISTER
+#endif
blr
#ifdef INITIALIZE_FPU