Removed duplicate PalCallStatic functions in different libraries. Moved ReadItc and InvalidateInstructionCacheRange to the BaseLib so other libs don't need .s files.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1809 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
ajfish
2006-10-22 03:03:45 +00:00
parent 9162172593
commit cd4903c497
9 changed files with 139 additions and 168 deletions

View File

@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MsaHeader>
<ModuleName>BaseTimerLibLocalApic</ModuleName>
<ModuleType>BASE</ModuleType>
<GuidValue>b5a05743-9b71-489b-a0ed-a0eb3950d23b</GuidValue>
<Version>1.0</Version>
<Abstract>Component description file for Baser Timer Library</Abstract>
<Description>Timer Library that only uses CPU resources to provide calibrated
<Description>Timer Library that only uses CPU resources to provide calibrated
delays on IA-32 and x64.</Description>
<Copyright>Copyright (c) 2006, Intel Corporation.</Copyright>
<License>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,
<License>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.</License>
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
</MsaHeader>
@@ -39,8 +39,6 @@
<SourceFiles>
<Filename SupArchList="IA32">x86TimerLib.c</Filename>
<Filename SupArchList="X64">x86TimerLib.c</Filename>
<Filename SupArchList="IPF">Ipf/PalCallStatic.s</Filename>
<Filename SupArchList="IPF">Ipf/ReadItc.s</Filename>
<Filename SupArchList="IPF">Ipf/IpfTimerLib.c</Filename>
<Filename SupArchList="EBC">Ebc/EbcTimerLib.c</Filename>
</SourceFiles>

View File

@@ -18,50 +18,8 @@
**/
typedef struct {
UINT64 Status;
UINT64 r9;
UINT64 r10;
UINT64 r11;
} PAL_PROC_RETURN;
/**
Performs a PAL call using static calling convention.
An internal function to perform a PAL call using static calling convention.
@param PalEntryPoint The entry point address of PAL. The address in ar.kr5
would be used if this parameter were NULL on input.
@param Arg1 The first argument of a PAL call.
@param Arg1 The second argument of a PAL call.
@param Arg1 The third argument of a PAL call.
@param Arg1 The fourth argument of a PAL call.
@return The values returned in r8, r9, r10 and r11.
**/
PAL_PROC_RETURN
PalCallStatic (
IN CONST VOID *PalEntryPoint,
IN UINT64 Arg1,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4
);
/**
Returns the current value of ar.itc.
An internal function to return the current value of ar.itc, which is the
timer tick on IPF.
@return The currect value of ar.itc
**/
INT64
InternalIpfReadItc (
VOID
);
/**
Performs a delay measured as number of ticks.
@@ -83,14 +41,14 @@ InternalIpfDelay (
//
// The target timer count is calculated here
//
Ticks = InternalIpfReadItc () + Delay;
Ticks = IpfReadItc () + Delay;
//
// Wait until time out
// Delay > 2^63 could not be handled by this function
// Timer wrap-arounds are handled correctly by this function
//
while (Ticks - InternalIpfReadItc () >= 0);
while (Ticks - IpfReadItc () >= 0);
}
/**
@@ -159,7 +117,7 @@ GetPerformanceCounter (
VOID
)
{
return InternalIpfReadItc ();
return IpfReadItc ();
}
/**

View File

@@ -1,48 +0,0 @@
/// @file
/// Contains an implementation of CallPalProcStatic on 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: PalCallStatic.s
///
///
.auto
.text
.proc PalCallStatic
.type PalCallStatic, @function
.regstk 5, 0, 0, 0
PalCallStatic::
cmp.eq p15 = in0, r0
mov r31 = in4
mov r8 = ip
(p15) mov in0 = ar.k5
add r8 = (_PalProcReturn - PalCallStatic), r8
mov r30 = in3
mov in4 = psr
mov in3 = b0
mov b7 = in0
rsm 1 << 14 // Disable interrupts
mov r29 = in2
mov r28 = in1
mov b0 = r8
br.cond.sptk.many b7
_PalProcReturn:
mov psr.l = in4
mov b0 = in3
br.ret.sptk.many b0
.endp PalCallStatic

View File

@@ -1,26 +0,0 @@
/// @file
/// Contains an implementation of InternalIpfReadItc () on 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: ReadItc.s
///
///
.auto
.text
.proc InternalIpfReadItc
.type InternalIpfReadItc, @function
InternalIpfReadItc::
mov r8 = ar.itc
br.ret.sptk.many b0
.endp InternalIpfReadItc