diff options
| author | Warner Losh <imp@FreeBSD.org> | 2017-03-07 20:53:26 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2017-03-07 20:53:26 +0000 |
| commit | 0499b37cea9ca98acfe36368e521ad36b7783f2d (patch) | |
| tree | 7968fdc8d6edf3e051bbd434a466eca88aacf938 /MdePkg/Library/BaseCpuLib/Arm | |
Notes
Diffstat (limited to 'MdePkg/Library/BaseCpuLib/Arm')
| -rw-r--r-- | MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.S | 36 | ||||
| -rw-r--r-- | MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.asm | 37 | ||||
| -rw-r--r-- | MdePkg/Library/BaseCpuLib/Arm/CpuSleep.S | 43 | ||||
| -rw-r--r-- | MdePkg/Library/BaseCpuLib/Arm/CpuSleep.asm | 44 |
4 files changed, 160 insertions, 0 deletions
diff --git a/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.S b/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.S new file mode 100644 index 000000000000..738f73356a3f --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.S @@ -0,0 +1,36 @@ +#------------------------------------------------------------------------------ +# +# CpuFlushTlb() for ARM +# +# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> +# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> +# 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. +# +#------------------------------------------------------------------------------ + +.text +.p2align 2 +GCC_ASM_EXPORT(CpuFlushTlb) + +#/** +# Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. +# +# Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. +# +#**/ +#VOID +#EFIAPI +#CpuFlushTlb ( +# VOID +# )# +# +ASM_PFX(CpuFlushTlb): + mov r0,#0 + mcr p15,0,r0,c8,c5,0 // Invalidate all the unlocked entried in TLB + bx LR diff --git a/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.asm b/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.asm new file mode 100644 index 000000000000..037d221a794d --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/Arm/CpuFlushTlb.asm @@ -0,0 +1,37 @@ +;------------------------------------------------------------------------------ +; +; CpuFlushTlb() for ARM +; +; Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> +; Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> +; 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. +; +;------------------------------------------------------------------------------ + + EXPORT CpuFlushTlb + AREA cpu_flush_tlb, CODE, READONLY + +;/** +; Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. +; +; Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. +; +;**/ +;VOID +;EFIAPI +;CpuFlushTlb ( +; VOID +; ); +; +CpuFlushTlb + MOV r0,#0 + MCR p15,0,r0,c8,c5,0 ;Invalidate all the unlocked entried in TLB + BX LR + + END diff --git a/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.S b/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.S new file mode 100644 index 000000000000..b84c80862350 --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.S @@ -0,0 +1,43 @@ +#------------------------------------------------------------------------------ +# +# CpuSleep() for ARMv7 +# +# ARMv6 versions was: +# MOV r0,#0 +# MCR p15,0,r0,c7,c0,4 ;Wait for Interrupt instruction +# +# But this is a no-op on ARMv7 +# +# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> +# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> +# 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. +# +#------------------------------------------------------------------------------ + +.text +.p2align 2 +GCC_ASM_EXPORT(CpuSleep) + +#/** +# Places the CPU in a sleep state until an interrupt is received. +# +# Places the CPU in a sleep state until an interrupt is received. If interrupts +# are disabled prior to calling this function, then the CPU will be placed in a +# sleep state indefinitely. +# +#**/ +#VOID +#EFIAPI +#CpuSleep ( +# VOID +# ); +# +ASM_PFX(CpuSleep): + wfi + bx lr diff --git a/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.asm b/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.asm new file mode 100644 index 000000000000..399b80f720fb --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/Arm/CpuSleep.asm @@ -0,0 +1,44 @@ +;------------------------------------------------------------------------------ +; +; CpuSleep() for ARMv7 +; +; ARMv6 versions was: +; MOV r0,#0 +; MCR p15,0,r0,c7,c0,4 ;Wait for Interrupt instruction +; +; But this is a no-op on ARMv7 +; +; Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> +; Portions copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR> +; 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. +; +;------------------------------------------------------------------------------ + + EXPORT CpuSleep + AREA cpu_sleep, CODE, READONLY + +;/** +; Places the CPU in a sleep state until an interrupt is received. +; +; Places the CPU in a sleep state until an interrupt is received. If interrupts +; are disabled prior to calling this function, then the CPU will be placed in a +; sleep state indefinitely. +; +;**/ +;VOID +;EFIAPI +;CpuSleep ( +; VOID +; ); +; +CpuSleep + WFI + BX LR + + END |
