Revision: 15396
          http://sourceforge.net/p/edk2/code/15396
Author:   oliviermartin
Date:     2014-03-26 19:31:01 +0000 (Wed, 26 Mar 2014)
Log Message:
-----------
ArmPkg/ArmLib: Added helper functions for accessing CPU ACTLR
        
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ArmPkg/Include/Library/ArmLib.h
    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/ArmPkg/Library/ArmLib/Common/ArmLib.c

Modified: trunk/edk2/ArmPkg/Include/Library/ArmLib.h
===================================================================
--- trunk/edk2/ArmPkg/Include/Library/ArmLib.h  2014-03-26 19:29:31 UTC (rev 
15395)
+++ trunk/edk2/ArmPkg/Include/Library/ArmLib.h  2014-03-26 19:31:01 UTC (rev 
15396)
@@ -625,4 +625,33 @@
   IN  UINTN   HypModeVectorBase
   );
 
+
+//
+// Helper functions for accessing CPU ACTLR
+//
+
+UINTN
+EFIAPI
+ArmReadCpuActlr (
+  VOID
+  );
+
+VOID
+EFIAPI
+ArmWriteCpuActlr (
+  IN  UINTN Val
+  );
+
+VOID
+EFIAPI
+ArmSetCpuActlrBit (
+  IN  UINTN    Bits
+  );
+
+VOID
+EFIAPI
+ArmUnsetCpuActlrBit (
+  IN  UINTN    Bits
+  );
+
 #endif // __ARM_LIB__

Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S     
2014-03-26 19:29:31 UTC (rev 15395)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S     
2014-03-26 19:31:01 UTC (rev 15396)
@@ -37,6 +37,10 @@
 GCC_ASM_EXPORT (ArmWriteMVBar)
 GCC_ASM_EXPORT (ArmCallWFE)
 GCC_ASM_EXPORT (ArmCallSEV)
+GCC_ASM_EXPORT (ArmReadCpuExCr)
+GCC_ASM_EXPORT (ArmWriteCpuExCr)
+GCC_ASM_EXPORT (ArmReadCpuActlr)
+GCC_ASM_EXPORT (ArmWriteCpuActlr)
 
 #------------------------------------------------------------------------------
 
@@ -196,5 +200,24 @@
   sev
   ret
 
+ASM_PFX(ArmReadCpuExCr):
+  mrs   x0, S3_1_c15_c2_1
+  ret
 
+ASM_PFX(ArmWriteCpuExCr):
+  msr   S3_1_c15_c2_1, x0
+  dsb   sy
+  isb
+  ret
+
+ASM_PFX(ArmReadCpuActlr):
+  mrs   x0, S3_1_c15_c2_0
+  ret
+
+ASM_PFX(ArmWriteCpuActlr):
+  msr   S3_1_c15_c2_0, x0
+  dsb   sy
+  isb
+  ret
+
 ASM_FUNCTION_REMOVE_IF_UNREFERENCED

Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S 2014-03-26 
19:29:31 UTC (rev 15395)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S 2014-03-26 
19:31:01 UTC (rev 15396)
@@ -47,6 +47,8 @@
 GCC_ASM_EXPORT(ArmCallWFE)
 GCC_ASM_EXPORT(ArmCallSEV)
 GCC_ASM_EXPORT(ArmReadSctlr)
+GCC_ASM_EXPORT(ArmReadCpuActlr)
+GCC_ASM_EXPORT(ArmWriteCpuActlr)
 
 #------------------------------------------------------------------------------
 
@@ -161,7 +163,6 @@
   mcr     p15, 4, r0, c12, c0, 0
   bx      lr
 
-
 ASM_PFX(ArmReadMVBar):
   mrc     p15, 0, r0, c12, c0, 1
   bx      lr
@@ -179,7 +180,17 @@
   bx      lr
 
 ASM_PFX(ArmReadSctlr):
-  mrc     p15, 0, R0, c1, c0, 0      @ Read SCTLR into R0 (Read control 
register configuration data)
-  bx     lr
+  mrc     p15, 0, r0, c1, c0, 0      @ Read SCTLR into R0 (Read control 
register configuration data)
+  bx      lr
 
+ASM_PFX(ArmReadCpuActlr):
+  mrc     p15, 0, r0, c1, c0, 1
+  bx      lr
+
+ASM_PFX(ArmWriteCpuActlr):
+  mcr     p15, 0, r0, c1, c0, 1
+  dsb
+  isb
+  bx      lr
+
 ASM_FUNCTION_REMOVE_IF_UNREFERENCED

Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm       
2014-03-26 19:29:31 UTC (rev 15395)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm       
2014-03-26 19:31:01 UTC (rev 15396)
@@ -47,6 +47,8 @@
     EXPORT ArmCallWFE
     EXPORT ArmCallSEV
     EXPORT ArmReadSctlr
+    EXPORT ArmReadCpuActlr
+    EXPORT ArmWriteCpuActlr
 
     AREA ArmLibSupport, CODE, READONLY
 
@@ -179,6 +181,17 @@
 
 ArmReadSctlr
   mrc     p15, 0, r0, c1, c0, 0      // Read SCTLR into R0 (Read control 
register configuration data)
-  bx       lr
+  bx     lr
 
+
+ArmReadCpuActlr
+  mrc     p15, 0, r0, c1, c0, 1
+  bx      lr
+
+ArmWriteCpuActlr
+  mcr     p15, 0, r0, c1, c0, 1
+  dsb
+  isb
+  bx      lr
+
   END

Modified: trunk/edk2/ArmPkg/Library/ArmLib/Common/ArmLib.c
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmLib/Common/ArmLib.c    2014-03-26 19:29:31 UTC 
(rev 15395)
+++ trunk/edk2/ArmPkg/Library/ArmLib/Common/ArmLib.c    2014-03-26 19:31:01 UTC 
(rev 15396)
@@ -1,7 +1,7 @@
 /** @file
 
   Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-  Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
   
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD 
License
@@ -62,3 +62,31 @@
   val &= ~Bits;
   ArmWriteAuxCr(val);
 }
+
+//
+// Helper functions for accessing CPUACTLR
+//
+
+VOID
+EFIAPI
+ArmSetCpuActlrBit (
+  IN  UINTN    Bits
+  )
+{
+  UINTN Value;
+  Value =  ArmReadCpuActlr ();
+  Value |= Bits;
+  ArmWriteCpuActlr (Value);
+}
+
+VOID
+EFIAPI
+ArmUnsetCpuActlrBit (
+  IN  UINTN    Bits
+  )
+{
+  UINTN Value;
+  Value = ArmReadCpuActlr ();
+  Value &= ~Bits;
+  ArmWriteCpuActlr (Value);
+}

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to