Revision: 14522
http://sourceforge.net/p/edk2/code/14522
Author: oliviermartin
Date: 2013-08-06 10:59:19 +0000 (Tue, 06 Aug 2013)
Log Message:
-----------
ARM: Remove NSACR from the common code
NSACR (Non-Secure Access Control Register) is AArch32 specific.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>
Modified Paths:
--------------
trunk/edk2/ArmPkg/ArmPkg.dec
trunk/edk2/ArmPkg/Include/Chipset/AArch64.h
trunk/edk2/ArmPkg/Include/Chipset/ArmV7.h
trunk/edk2/ArmPkg/Include/Library/ArmLib.h
trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S
trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm
trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S
trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S
trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
trunk/edk2/ArmPlatformPkg/Sec/Sec.c
trunk/edk2/ArmPlatformPkg/Sec/Sec.inf
trunk/edk2/ArmPlatformPkg/Sec/SecInternal.h
Added Paths:
-----------
trunk/edk2/ArmPlatformPkg/Sec/AArch64/Arch.c
trunk/edk2/ArmPlatformPkg/Sec/Arm/Arch.c
Modified: trunk/edk2/ArmPkg/ArmPkg.dec
===================================================================
--- trunk/edk2/ArmPkg/ArmPkg.dec 2013-08-05 01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/ArmPkg.dec 2013-08-06 10:59:19 UTC (rev 14522)
@@ -128,15 +128,7 @@
# - BIT9 : SIF - Secure Instruction Fetch
# 0x31 = NS | EA | FW
gArmTokenSpaceGuid.PcdArmScr|0x31|UINT32|0x00000038
-
- # Non Secure Access Control Register
- # - BIT15 : NSASEDIS - Disable Non-secure Advanced SIMD functionality
- # - BIT14 : NSD32DIS - Disable Non-secure use of D16-D31
- # - BIT11 : cp11 - Non-secure access to coprocessor 11 enable
- # - BIT10 : cp10 - Non-secure access to coprocessor 10 enable
- # 0xC00 = cp10 | cp11
- gArmTokenSpaceGuid.PcdArmNsacr|0xC00|UINT32|0x00000039
-
+
# System Memory (DRAM): These PCDs define the region of in-built system
memory
# Some platforms can get DRAM extensions, these additional regions will be
declared
# to UEFI by ArmPLatformPlib
@@ -182,6 +174,14 @@
# The FDT blob must be loaded at a 64bit aligned address.
gArmTokenSpaceGuid.PcdArmLinuxFdtAlignment|0x8|UINT32|0x00000026
+ # Non Secure Access Control Register
+ # - BIT15 : NSASEDIS - Disable Non-secure Advanced SIMD functionality
+ # - BIT14 : NSD32DIS - Disable Non-secure use of D16-D31
+ # - BIT11 : cp11 - Non-secure access to coprocessor 11 enable
+ # - BIT10 : cp10 - Non-secure access to coprocessor 10 enable
+ # 0xC00 = cp10 | cp11
+ gArmTokenSpaceGuid.PcdArmNsacr|0xC00|UINT32|0x00000039
+
[PcdsFixedAtBuild.AARCH64]
# By default we do transition to EL2 non-secure mode with Stack for EL2.
# Mode Description Bits
Modified: trunk/edk2/ArmPkg/Include/Chipset/AArch64.h
===================================================================
--- trunk/edk2/ArmPkg/Include/Chipset/AArch64.h 2013-08-05 01:50:11 UTC (rev
14521)
+++ trunk/edk2/ArmPkg/Include/Chipset/AArch64.h 2013-08-06 10:59:19 UTC (rev
14522)
@@ -34,15 +34,6 @@
// ID_AA64PFR0 - AArch64 Processor Feature Register 0 definitions
#define AARCH64_PFR0_FP (0xF << 16)
-// NSACR - Non-Secure Access Control Register definitions
-#define NSACR_CP(cp) ((1 << (cp)) & 0x3FFF)
-#define NSACR_NSD32DIS (1 << 14)
-#define NSACR_NSASEDIS (1 << 15)
-#define NSACR_PLE (1 << 16)
-#define NSACR_TL (1 << 17)
-#define NSACR_NS_SMP (1 << 18)
-#define NSACR_RFR (1 << 19)
-
// SCR - Secure Configuration Register definitions
#define SCR_NS (1 << 0)
#define SCR_IRQ (1 << 1)
@@ -176,4 +167,9 @@
IN UINT64 GcdAttributes
);
+UINTN
+ArmWriteCptr (
+ IN UINT64 Cptr
+ );
+
#endif // __AARCH64_H__
Modified: trunk/edk2/ArmPkg/Include/Chipset/ArmV7.h
===================================================================
--- trunk/edk2/ArmPkg/Include/Chipset/ArmV7.h 2013-08-05 01:50:11 UTC (rev
14521)
+++ trunk/edk2/ArmPkg/Include/Chipset/ArmV7.h 2013-08-06 10:59:19 UTC (rev
14522)
@@ -112,5 +112,17 @@
ArmReadIdPfr1 (
VOID
);
-
+
+UINT32
+EFIAPI
+ArmReadNsacr (
+ VOID
+ );
+
+VOID
+EFIAPI
+ArmWriteNsacr (
+ IN UINT32 Nsacr
+ );
+
#endif // __ARM_V7_H__
Modified: trunk/edk2/ArmPkg/Include/Library/ArmLib.h
===================================================================
--- trunk/edk2/ArmPkg/Include/Library/ArmLib.h 2013-08-05 01:50:11 UTC (rev
14521)
+++ trunk/edk2/ArmPkg/Include/Library/ArmLib.h 2013-08-06 10:59:19 UTC (rev
14522)
@@ -537,18 +537,6 @@
UINT32
EFIAPI
-ArmReadNsacr (
- VOID
- );
-
-VOID
-EFIAPI
-ArmWriteNsacr (
- IN UINT32 SetWayFormat
- );
-
-UINT32
-EFIAPI
ArmReadScr (
VOID
);
Modified: trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S 2013-08-05
01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S 2013-08-06
10:59:19 UTC (rev 14522)
@@ -1,7 +1,7 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-# Copyright (c) 2011, ARM Limited. All rights reserved.
+# Copyright (c) 2011-2013, ARM Limited. All rights reserved.
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD
License
@@ -29,6 +29,8 @@
GCC_ASM_EXPORT(ArmDisableInterrupts)
GCC_ASM_EXPORT(ReadCCSIDR)
GCC_ASM_EXPORT(ReadCLIDR)
+GCC_ASM_EXPORT(ArmReadNsacr)
+GCC_ASM_EXPORT(ArmWriteNsacr)
#------------------------------------------------------------------------------
@@ -98,4 +100,12 @@
mrc p15,1,r0,c0,c0,1 @ Read CP15 Cache Level ID Register
bx lr
+ASM_PFX(ArmReadNsacr):
+ mrc p15, 0, r0, c1, c1, 2
+ bx lr
+
+ASM_PFX(ArmWriteNsacr):
+ mcr p15, 0, r0, c1, c1, 2
+ bx lr
+
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
Modified: trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm 2013-08-05
01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm 2013-08-06
10:59:19 UTC (rev 14522)
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-// Copyright (c) 2011, ARM Limited. All rights reserved.
+// Copyright (c) 2011-2013, ARM Limited. All rights reserved.
//
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD
License
@@ -25,7 +25,9 @@
EXPORT ArmDisableInterrupts
EXPORT ReadCCSIDR
EXPORT ReadCLIDR
-
+ EXPORT ArmReadNsacr
+ EXPORT ArmWriteNsacr
+
AREA ArmLibSupportV7, CODE, READONLY
@@ -96,5 +98,13 @@
ReadCLIDR
mrc p15,1,r0,c0,c0,1 ; Read CP15 Cache Level ID Register
bx lr
-
+
+ArmReadNsacr
+ mrc p15, 0, r0, c1, c1, 2
+ bx lr
+
+ArmWriteNsacr
+ mcr p15, 0, r0, c1, c1, 2
+ bx lr
+
END
Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S
2013-08-05 01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S
2013-08-06 10:59:19 UTC (rev 14522)
@@ -32,7 +32,7 @@
GCC_ASM_EXPORT (ArmReadAuxCr)
GCC_ASM_EXPORT (ArmInvalidateTlb)
GCC_ASM_EXPORT (ArmUpdateTranslationTableEntry)
-GCC_ASM_EXPORT (ArmWriteNsacr)
+GCC_ASM_EXPORT (ArmWriteCptr)
GCC_ASM_EXPORT (ArmWriteScr)
GCC_ASM_EXPORT (ArmWriteMVBar)
GCC_ASM_EXPORT (ArmCallWFE)
@@ -176,9 +176,9 @@
isb
ret
-ASM_PFX(ArmWriteNsacr):
+ASM_PFX(ArmWriteCptr):
msr cptr_el3, x0 // EL3 Coprocessor Trap Reg (CPTR)
- ret // Non-Secure Access Control Reg (NSACR) in
ARMv7
+ ret
ASM_PFX(ArmWriteScr):
msr scr_el3, x0 // Secure configuration register EL3
Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S 2013-08-05
01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S 2013-08-06
10:59:19 UTC (rev 14522)
@@ -38,8 +38,6 @@
GCC_ASM_EXPORT(ArmReadAuxCr)
GCC_ASM_EXPORT(ArmInvalidateTlb)
GCC_ASM_EXPORT(ArmUpdateTranslationTableEntry)
-GCC_ASM_EXPORT(ArmReadNsacr)
-GCC_ASM_EXPORT(ArmWriteNsacr)
GCC_ASM_EXPORT(ArmReadScr)
GCC_ASM_EXPORT(ArmWriteScr)
GCC_ASM_EXPORT(ArmReadMVBar)
@@ -147,14 +145,6 @@
isb
bx lr
-ASM_PFX(ArmReadNsacr):
- mrc p15, 0, r0, c1, c1, 2
- bx lr
-
-ASM_PFX(ArmWriteNsacr):
- mcr p15, 0, r0, c1, c1, 2
- bx lr
-
ASM_PFX(ArmReadScr):
mrc p15, 0, r0, c1, c1, 0
bx lr
Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
2013-08-05 01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
2013-08-06 10:59:19 UTC (rev 14522)
@@ -38,8 +38,6 @@
EXPORT ArmReadAuxCr
EXPORT ArmInvalidateTlb
EXPORT ArmUpdateTranslationTableEntry
- EXPORT ArmReadNsacr
- EXPORT ArmWriteNsacr
EXPORT ArmReadScr
EXPORT ArmWriteScr
EXPORT ArmReadMVBar
@@ -147,14 +145,6 @@
isb
bx lr
-ArmReadNsacr
- mrc p15, 0, r0, c1, c1, 2
- bx lr
-
-ArmWriteNsacr
- mcr p15, 0, r0, c1, c1, 2
- bx lr
-
ArmReadScr
mrc p15, 0, r0, c1, c1, 0
bx lr
Added: trunk/edk2/ArmPlatformPkg/Sec/AArch64/Arch.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Sec/AArch64/Arch.c
(rev 0)
+++ trunk/edk2/ArmPlatformPkg/Sec/AArch64/Arch.c 2013-08-06 10:59:19 UTC
(rev 14522)
@@ -0,0 +1,25 @@
+/** @file
+*
+* Copyright (c) 2013, ARM Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD
License
+* which accompanies this distribution. The full text of the license may be
found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED.
+*
+**/
+
+#include <Chipset/AArch64.h>
+
+VOID
+EFIAPI
+ArmSecArchTrustzoneInit (
+ VOID
+ )
+{
+ // Do not trap any access to Floating Point and Advanced SIMD in EL3.
+ ArmWriteCptr (0);
+}
Added: trunk/edk2/ArmPlatformPkg/Sec/Arm/Arch.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Sec/Arm/Arch.c (rev 0)
+++ trunk/edk2/ArmPlatformPkg/Sec/Arm/Arch.c 2013-08-06 10:59:19 UTC (rev
14522)
@@ -0,0 +1,25 @@
+/** @file
+*
+* Copyright (c) 2013, ARM Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD
License
+* which accompanies this distribution. The full text of the license may be
found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED.
+*
+**/
+
+#include <Chipset/ArmV7.h>
+
+VOID
+EFIAPI
+ArmSecArchTrustzoneInit (
+ VOID
+ )
+{
+ // Write to CP15 Non-secure Access Control Register
+ ArmWriteNsacr (PcdGet32 (PcdArmNsacr));
+}
Modified: trunk/edk2/ArmPlatformPkg/Sec/Sec.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Sec/Sec.c 2013-08-05 01:50:11 UTC (rev 14521)
+++ trunk/edk2/ArmPlatformPkg/Sec/Sec.c 2013-08-06 10:59:19 UTC (rev 14522)
@@ -165,8 +165,8 @@
JumpAddress = PcdGet32 (PcdFvBaseAddress);
ArmPlatformSecExtraAction (MpId, &JumpAddress);
- // Write to CP15 Non-secure Access Control Register
- ArmWriteNsacr (PcdGet32 (PcdArmNsacr));
+ // Initialize architecture specific security policy
+ ArmSecArchTrustzoneInit ();
// CP15 Secure Configuration Register
ArmWriteScr (PcdGet32 (PcdArmScr));
Modified: trunk/edk2/ArmPlatformPkg/Sec/Sec.inf
===================================================================
--- trunk/edk2/ArmPlatformPkg/Sec/Sec.inf 2013-08-05 01:50:11 UTC (rev
14521)
+++ trunk/edk2/ArmPlatformPkg/Sec/Sec.inf 2013-08-06 10:59:19 UTC (rev
14522)
@@ -24,12 +24,14 @@
Sec.c
[Sources.ARM]
+ Arm/Arch.c
Arm/Helper.asm | RVCT
Arm/Helper.S | GCC
Arm/SecEntryPoint.S | GCC
Arm/SecEntryPoint.asm | RVCT
[Sources.AARCH64]
+ AArch64/Arch.c
AArch64/Helper.S | GCC
AArch64/SecEntryPoint.S | GCC
@@ -56,14 +58,13 @@
[FeaturePcd]
gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec
-[FixedPcd]
+[FixedPcd.common]
gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString
gArmTokenSpaceGuid.PcdTrustzoneSupport
gArmTokenSpaceGuid.PcdVFPEnabled
gArmTokenSpaceGuid.PcdArmScr
- gArmTokenSpaceGuid.PcdArmNsacr
gArmTokenSpaceGuid.PcdArmNonSecModeTransition
gArmTokenSpaceGuid.PcdSecureFvBaseAddress
@@ -81,3 +82,6 @@
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
gArmPlatformTokenSpaceGuid.PcdSecGlobalVariableSize
+
+[FixedPcd.ARM]
+ gArmTokenSpaceGuid.PcdArmNsacr
Modified: trunk/edk2/ArmPlatformPkg/Sec/SecInternal.h
===================================================================
--- trunk/edk2/ArmPlatformPkg/Sec/SecInternal.h 2013-08-05 01:50:11 UTC (rev
14521)
+++ trunk/edk2/ArmPlatformPkg/Sec/SecInternal.h 2013-08-06 10:59:19 UTC (rev
14522)
@@ -74,4 +74,10 @@
IN UINTN LR
);
+VOID
+EFIAPI
+ArmSecArchTrustzoneInit (
+ VOID
+ );
+
#endif
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent
caught up. So what steps can you take to put your SQL databases under
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits