mirror of https://github.com/acidanthera/audk.git
created a CpuLib for CpuSleep and CpuFlushTlb from BaseLib to remove circular dependency on PalCallLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4020 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
052ad7e191
commit
e0337bfab8
|
@ -0,0 +1,68 @@
|
||||||
|
#/** @file
|
||||||
|
# Component description file for Base Library
|
||||||
|
#
|
||||||
|
# Base Library implementation.
|
||||||
|
# Copyright (c) 2007, Intel Corporation.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#**/
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = CpuLib
|
||||||
|
FILE_GUID = 4FBD2538-249C-4b50-8F4A-A9E66609CBF6
|
||||||
|
MODULE_TYPE = BASE
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = CpuLib
|
||||||
|
EDK_RELEASE_VERSION = 0x00020000
|
||||||
|
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
#
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
|
||||||
|
[Sources.Ia32]
|
||||||
|
Ia32/CpuSleep.c | MSFT
|
||||||
|
Ia32/CpuFlushTlb.c | MSFT
|
||||||
|
|
||||||
|
Ia32/CpuSleep.asm | INTEL
|
||||||
|
Ia32/CpuFlushTlb.asm | INTEL
|
||||||
|
|
||||||
|
Ia32/CpuSleep.S | GCC
|
||||||
|
Ia32/CpuFlushTlb.S | GCC
|
||||||
|
|
||||||
|
[Sources.X64]
|
||||||
|
X64/CpuFlushTlb.asm
|
||||||
|
X64/CpuSleep.asm
|
||||||
|
|
||||||
|
X64/CpuSleep.S | GCC
|
||||||
|
X64/CpuFlushTlb.S | GCC
|
||||||
|
|
||||||
|
[Sources.IPF]
|
||||||
|
Ipf/CpuFlushTlb.s
|
||||||
|
Ipf/CpuSleep.c
|
||||||
|
|
||||||
|
[Sources.EBC]
|
||||||
|
Ebc/CpuSleepFlushTlb.c
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
|
||||||
|
|
||||||
|
[LibraryClasses.Ipf]
|
||||||
|
PalCallLib
|
||||||
|
|
||||||
|
|
||||||
|
[Pcd.common]
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/** @file
|
||||||
|
Base Library CPU Functions for EBC
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation<BR>
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ASSERT (FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
||||||
|
)
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
#------------------------------------------------------------------------------ ;
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuFlushTlb.Asm
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuFlushTlb function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.globl ASM_PFX(CpuFlushTlb)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuFlushTlb (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
ASM_PFX(CpuFlushTlb):
|
||||||
|
movl %cr3, %eax
|
||||||
|
movl %eax, %cr3
|
||||||
|
ret
|
|
@ -0,0 +1,40 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuFlushTlb.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuFlushTlb function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.386p
|
||||||
|
.model flat,C
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuFlushTlb (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuFlushTlb PROC
|
||||||
|
mov eax, cr3
|
||||||
|
mov cr3, eax ; moving to CR3 flushes TLB
|
||||||
|
ret
|
||||||
|
CpuFlushTlb ENDP
|
||||||
|
|
||||||
|
END
|
|
@ -0,0 +1,31 @@
|
||||||
|
/** @file
|
||||||
|
CpuFlushTlb function.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation<BR>
|
||||||
|
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 common header file for this module.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuFlushTlb (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
mov eax, cr3
|
||||||
|
mov cr3, eax
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#------------------------------------------------------------------------------ ;
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuPause.Asm
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuPause function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.globl ASM_PFX(CpuPause)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuPause (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
ASM_PFX(CpuPause):
|
||||||
|
pause
|
||||||
|
ret
|
|
@ -0,0 +1,40 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuPause.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuPause function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.686
|
||||||
|
.model flat,C
|
||||||
|
.xmm
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuPause (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuPause PROC
|
||||||
|
pause
|
||||||
|
ret
|
||||||
|
CpuPause ENDP
|
||||||
|
|
||||||
|
END
|
|
@ -0,0 +1,30 @@
|
||||||
|
/** @file
|
||||||
|
CpuPause function.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation<BR>
|
||||||
|
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 common header file for this module.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuPause (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
pause
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#------------------------------------------------------------------------------ ;
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuSleep.Asm
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuSleep function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.globl ASM_PFX(CpuSleep)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuSleep (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
ASM_PFX(CpuSleep):
|
||||||
|
hlt
|
||||||
|
ret
|
|
@ -0,0 +1,39 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuSleep.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuSleep function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.386
|
||||||
|
.model flat,C
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuSleep (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuSleep PROC
|
||||||
|
hlt
|
||||||
|
ret
|
||||||
|
CpuSleep ENDP
|
||||||
|
|
||||||
|
END
|
|
@ -0,0 +1,30 @@
|
||||||
|
/** @file
|
||||||
|
CpuSleep function.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation<BR>
|
||||||
|
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 common header file for this module.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
CpuSleep (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_asm {
|
||||||
|
hlt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
/// @file
|
||||||
|
/// CpuFlushTlb() function for Itanium-based architecture.
|
||||||
|
///
|
||||||
|
/// Copyright (c) 2006, Intel Corporation
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
/// Module Name: CpuFlushTlb.s
|
||||||
|
///
|
||||||
|
///
|
||||||
|
|
||||||
|
.auto
|
||||||
|
.text
|
||||||
|
|
||||||
|
.globl PalCall
|
||||||
|
.type PalCall, @function
|
||||||
|
|
||||||
|
.proc CpuFlushTlb
|
||||||
|
.type CpuFlushTlb, @function
|
||||||
|
CpuFlushTlb::
|
||||||
|
alloc loc0 = ar.pfs, 0, 3, 5, 0
|
||||||
|
mov out0 = 0
|
||||||
|
mov out1 = 6
|
||||||
|
mov out2 = 0
|
||||||
|
mov out3 = 0
|
||||||
|
mov loc1 = b0
|
||||||
|
mov out4 = 0
|
||||||
|
brl.call.sptk b0 = PalCall
|
||||||
|
mov loc2 = psr // save PSR
|
||||||
|
mov ar.pfs = loc0
|
||||||
|
extr.u r14 = r10, 32, 32 // r14 <- count1
|
||||||
|
rsm 1 << 14 // Disable interrupts
|
||||||
|
extr.u r15 = r11, 32, 32 // r15 <- stride1
|
||||||
|
extr.u r10 = r10, 0, 32 // r10 <- count2
|
||||||
|
add r10 = -1, r10
|
||||||
|
extr.u r11 = r11, 0, 32 // r11 <- stride2
|
||||||
|
br.cond.sptk LoopPredicate
|
||||||
|
LoopOuter:
|
||||||
|
mov ar.lc = r10 // LC <- count2
|
||||||
|
mov ar.ec = r0 // EC <- 0
|
||||||
|
Loop:
|
||||||
|
ptc.e r9
|
||||||
|
add r9 = r11, r9 // r9 += stride2
|
||||||
|
br.ctop.sptk Loop
|
||||||
|
add r9 = r15, r9 // r9 += stride1
|
||||||
|
LoopPredicate:
|
||||||
|
cmp.ne p6 = r0, r14 // count1 == 0?
|
||||||
|
add r14 = -1, r14
|
||||||
|
(p6) br.cond.sptk LoopOuter
|
||||||
|
mov psr.l = loc2
|
||||||
|
mov b0 = loc1
|
||||||
|
br.ret.sptk.many b0
|
||||||
|
.endp
|
|
@ -0,0 +1,25 @@
|
||||||
|
/// @file
|
||||||
|
/// CpuPause() function for Itanium-based architecture.
|
||||||
|
///
|
||||||
|
/// Copyright (c) 2006, Intel Corporation
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
/// Module Name: CpuPause.s
|
||||||
|
///
|
||||||
|
///
|
||||||
|
|
||||||
|
.auto
|
||||||
|
.text
|
||||||
|
|
||||||
|
.proc CpuPause
|
||||||
|
.type CpuPause, @function
|
||||||
|
CpuPause::
|
||||||
|
hint @pause
|
||||||
|
br.ret.sptk.many b0
|
||||||
|
.endp
|
|
@ -0,0 +1,32 @@
|
||||||
|
/** @file
|
||||||
|
Base Library CPU functions for Itanium
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation<BR>
|
||||||
|
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 <Library/PalCallLib.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
||||||
|
)
|
||||||
|
{
|
||||||
|
PalCall (29, 0, 0, 0);
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuFlushTlb.Asm
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuFlushTlb function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.global _CpuFlushTlb
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuFlushTlb (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
_CpuFlushTlb:
|
||||||
|
mov %cr3, %rax
|
||||||
|
mov %rax, %cr3
|
||||||
|
ret
|
|
@ -0,0 +1,38 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuFlushTlb.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuFlushTlb function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuFlushTlb (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuFlushTlb PROC
|
||||||
|
mov rax, cr3
|
||||||
|
mov cr3, rax
|
||||||
|
ret
|
||||||
|
CpuFlushTlb ENDP
|
||||||
|
|
||||||
|
END
|
|
@ -0,0 +1,34 @@
|
||||||
|
#------------------------------------------------------------------------------ ;
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuPause.S
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuPause function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuPause (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
.global _CpuPause;
|
||||||
|
_CpuPause:
|
||||||
|
pause
|
||||||
|
ret
|
|
@ -0,0 +1,37 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuPause.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuPause function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuPause (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuPause PROC
|
||||||
|
pause
|
||||||
|
ret
|
||||||
|
CpuPause ENDP
|
||||||
|
|
||||||
|
END
|
|
@ -0,0 +1,34 @@
|
||||||
|
#------------------------------------------------------------------------------ ;
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Module Name:
|
||||||
|
#
|
||||||
|
# CpuSleep.S
|
||||||
|
#
|
||||||
|
# Abstract:
|
||||||
|
#
|
||||||
|
# CpuSleep function
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# VOID
|
||||||
|
# EFIAPI
|
||||||
|
# CpuSleep (
|
||||||
|
# VOID
|
||||||
|
# );
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
.global _CpuSleep;
|
||||||
|
_CpuSleep:
|
||||||
|
hlt
|
||||||
|
ret
|
|
@ -0,0 +1,37 @@
|
||||||
|
;------------------------------------------------------------------------------ ;
|
||||||
|
; Copyright (c) 2006, Intel Corporation
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Module Name:
|
||||||
|
;
|
||||||
|
; CpuSleep.Asm
|
||||||
|
;
|
||||||
|
; Abstract:
|
||||||
|
;
|
||||||
|
; CpuSleep function
|
||||||
|
;
|
||||||
|
; Notes:
|
||||||
|
;
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; VOID
|
||||||
|
; EFIAPI
|
||||||
|
; CpuSleep (
|
||||||
|
; VOID
|
||||||
|
; );
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CpuSleep PROC
|
||||||
|
hlt
|
||||||
|
ret
|
||||||
|
CpuSleep ENDP
|
||||||
|
|
||||||
|
END
|
Loading…
Reference in New Issue