mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-21 12:44:50 +02:00
ArmPkg: Configure TTBCR register
Architecturally, the TTBCR register value is undefined at reset for Non-Secure. On some platforms the reset value for TTBCR is not zero and this causes a data abort exception once the MMU is enabled. This patch configures the TTBCR register to enable translation table walk using TTBR0. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>
This commit is contained in:
parent
eea222ced0
commit
ff1f27c055
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||||
Copyright (c) 2011 - 2015, ARM Ltd. All rights reserved.<BR>
|
Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -353,6 +353,12 @@ ArmSetTTBR0 (
|
|||||||
IN VOID *TranslationTableBase
|
IN VOID *TranslationTableBase
|
||||||
);
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
ArmSetTTBCR (
|
||||||
|
IN UINT32 Bits
|
||||||
|
);
|
||||||
|
|
||||||
VOID *
|
VOID *
|
||||||
EFIAPI
|
EFIAPI
|
||||||
ArmGetTTBR0BaseAddress (
|
ArmGetTTBR0BaseAddress (
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
* File managing the MMU for ARMv7 architecture
|
* File managing the MMU for ARMv7 architecture
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011-2013, ARM Limited. All rights reserved.
|
* Copyright (c) 2011-2016, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are licensed and made available under the terms and conditions of the BSD License
|
* are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -347,6 +347,17 @@ ArmConfigureMmu (
|
|||||||
|
|
||||||
ArmSetTTBR0 ((VOID *)(UINTN)(((UINTN)TranslationTable & ~TRANSLATION_TABLE_SECTION_ALIGNMENT_MASK) | (TTBRAttributes & 0x7F)));
|
ArmSetTTBR0 ((VOID *)(UINTN)(((UINTN)TranslationTable & ~TRANSLATION_TABLE_SECTION_ALIGNMENT_MASK) | (TTBRAttributes & 0x7F)));
|
||||||
|
|
||||||
|
//
|
||||||
|
// The TTBCR register value is undefined at reset in the Non-Secure world.
|
||||||
|
// Writing 0 has the effect of:
|
||||||
|
// Clearing EAE: Use short descriptors, as mandated by specification.
|
||||||
|
// Clearing PD0 and PD1: Translation Table Walk Disable is off.
|
||||||
|
// Clearing N: Perform all translation table walks through TTBR0.
|
||||||
|
// (0 is the default reset value in systems not implementing
|
||||||
|
// the Security Extensions.)
|
||||||
|
//
|
||||||
|
ArmSetTTBCR (0);
|
||||||
|
|
||||||
ArmSetDomainAccessControl (DOMAIN_ACCESS_CONTROL_NONE(15) |
|
ArmSetDomainAccessControl (DOMAIN_ACCESS_CONTROL_NONE(15) |
|
||||||
DOMAIN_ACCESS_CONTROL_NONE(14) |
|
DOMAIN_ACCESS_CONTROL_NONE(14) |
|
||||||
DOMAIN_ACCESS_CONTROL_NONE(13) |
|
DOMAIN_ACCESS_CONTROL_NONE(13) |
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||||
# Copyright (c) 2011 - 2014, ARM Limited. All rights reserved.
|
# Copyright (c) 2011 - 2016, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -23,6 +23,7 @@ GCC_ASM_EXPORT(ArmGetInterruptState)
|
|||||||
GCC_ASM_EXPORT(ArmGetFiqState)
|
GCC_ASM_EXPORT(ArmGetFiqState)
|
||||||
GCC_ASM_EXPORT(ArmGetTTBR0BaseAddress)
|
GCC_ASM_EXPORT(ArmGetTTBR0BaseAddress)
|
||||||
GCC_ASM_EXPORT(ArmSetTTBR0)
|
GCC_ASM_EXPORT(ArmSetTTBR0)
|
||||||
|
GCC_ASM_EXPORT(ArmSetTTBCR)
|
||||||
GCC_ASM_EXPORT(ArmSetDomainAccessControl)
|
GCC_ASM_EXPORT(ArmSetDomainAccessControl)
|
||||||
GCC_ASM_EXPORT(CPSRMaskInsert)
|
GCC_ASM_EXPORT(CPSRMaskInsert)
|
||||||
GCC_ASM_EXPORT(CPSRRead)
|
GCC_ASM_EXPORT(CPSRRead)
|
||||||
@ -111,6 +112,11 @@ ASM_PFX(ArmSetTTBR0):
|
|||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
ASM_PFX(ArmSetTTBCR):
|
||||||
|
mcr p15, 0, r0, c2, c0, 2
|
||||||
|
isb
|
||||||
|
bx lr
|
||||||
|
|
||||||
ASM_PFX(ArmGetTTBR0BaseAddress):
|
ASM_PFX(ArmGetTTBR0BaseAddress):
|
||||||
mrc p15,0,r0,c2,c0,0
|
mrc p15,0,r0,c2,c0,0
|
||||||
LoadConstantToReg(0xFFFFC000, r1)
|
LoadConstantToReg(0xFFFFC000, r1)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||||
// Copyright (c) 2011 - 2014, ARM Limited. All rights reserved.
|
// Copyright (c) 2011 - 2016, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -85,6 +85,11 @@
|
|||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
RVCT_ASM_EXPORT ArmSetTTBCR
|
||||||
|
mcr p15, 0, r0, c2, c0, 2
|
||||||
|
isb
|
||||||
|
bx lr
|
||||||
|
|
||||||
RVCT_ASM_EXPORT ArmGetTTBR0BaseAddress
|
RVCT_ASM_EXPORT ArmGetTTBR0BaseAddress
|
||||||
mrc p15,0,r0,c2,c0,0
|
mrc p15,0,r0,c2,c0,0
|
||||||
LoadConstantToReg(0xFFFFC000, r1)
|
LoadConstantToReg(0xFFFFC000, r1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user