diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-14 07:57:38 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-14 07:59:55 +0200 |
commit | a12724f9343a2016958fdc31b4c7362c9429ce78 (patch) | |
tree | d5a31c94986ec708bf16aadd57ab39a22491e508 | |
parent | cpukit: pppd: fix compile warning (diff) | |
download | rtems-a12724f9343a2016958fdc31b4c7362c9429ce78.tar.bz2 |
bsp/qoriq: Fix MMU initialization for e6500
In case a hypervisor mode is present, then we must set MAS8 for some TLB
operations, otherwise the run-time behaviour is unpredictable.
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/configure.ac | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/configure.ac b/c/src/lib/libbsp/powerpc/qoriq/configure.ac index a02f209455..bc78d7dfbb 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/configure.ac +++ b/c/src/lib/libbsp/powerpc/qoriq/configure.ac @@ -164,6 +164,10 @@ RTEMS_BSPOPTS_SET([QORIQ_MMU_DEVICE_MAS7],[qoriq_t*],[0xf]) RTEMS_BSPOPTS_SET([QORIQ_MMU_DEVICE_MAS7],[*],[0x0]) RTEMS_BSPOPTS_HELP([QORIQ_MMU_DEVICE_MAS7],[MAS7 value for device TLB1 entries]) +RTEMS_BSPOPTS_SET([QORIQ_HAS_HYPERVISOR_MODE],[qoriq_t*],[1]) +RTEMS_BSPOPTS_SET([QORIQ_HAS_HYPERVISOR_MODE],[*],[]) +RTEMS_BSPOPTS_HELP([QORIQ_HAS_HYPERVISOR_MODE],[defined if the processor core has a hypervisor mode]) + RTEMS_BSPOPTS_SET([QORIQ_L2CSR0],[qoriq_t*],[0xfec20000]) RTEMS_BSPOPTS_SET([QORIQ_L2CSR0],[*],[]) RTEMS_BSPOPTS_HELP([QORIQ_L2CSR0],[address of L2CSR0 register]) diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S index dfd0be938a..5d04c2f211 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-tlb1.S @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2011 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011, 2016 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> @@ -20,6 +20,8 @@ * http://www.rtems.org/license/LICENSE. */ +#include <bspopts.h> + #include <libcpu/powerpc-utility.h> .global qoriq_tlb1_write @@ -42,6 +44,10 @@ qoriq_tlb1_write: or r6, r8, r6 mtspr FSL_EIS_MAS3, r6 mtspr FSL_EIS_MAS7, r7 +#ifdef QORIQ_HAS_HYPERVISOR_MODE + li r0, 0 + mtspr FSL_EIS_MAS8, r0 +#endif tlbwe sync isync @@ -56,6 +62,9 @@ qoriq_tlb1_invalidate: mtspr FSL_EIS_MAS2, r0 mtspr FSL_EIS_MAS3, r0 mtspr FSL_EIS_MAS7, r0 +#ifdef QORIQ_HAS_HYPERVISOR_MODE + mtspr FSL_EIS_MAS8, r0 +#endif tlbwe sync isync |