]> git.proxmox.com Git - mirror_edk2.git/commit - OvmfPkg/OvmfPkgX64.dsc
OvmfPkg: AcpiTimerLib: Split into multiple phase-specific instances
authorGabriel Somlo <somlo@cmu.edu>
Fri, 14 Nov 2014 00:38:17 +0000 (00:38 +0000)
committerjljusten <jljusten@Edk2>
Fri, 14 Nov 2014 00:38:17 +0000 (00:38 +0000)
commit170ef2d91612350fd1d1bac9d77b3ce0bffda714
treefa1e67115eefa994c76501526e67940dabc18f97
parent72a1100171a627ce26789c193ca7036eb8a5364a
OvmfPkg: AcpiTimerLib: Split into multiple phase-specific instances

Remove local power management register access macros in favor of
factored-out ones in OvmfPkg/Include/OvmfPlatforms.h

Next, AcpiTimerLib is split out into three instances, for use during
various stages:

  - BaseRom: used during SEC, PEI_CORE, and PEIM;
  - Dxe:     used during DXE_DRIVER and DXE_RUNTIME_DRIVER;
  - Base:    used by default during all other stages.

Most of the code remains in AcpiTimerLib.c, to be shared by all
instances. The two platform-dependent methods (constructor and
InternalAcpiGetTimerTick) are provided separately by source files
specific to each instance, namely [BaseRom|Base|Dxe]AcpiTimerLib.c.

Since pre-DXE stages can't rely on storing data in global variables,
methods specific to the "BaseRom" instance will call platform
detection macros each time they're invoked.

The "Base" instance calls platform detection macros only from its
constructor, and caches the address required by InternalAcpiTimerTick
in a global variable.

The "Dxe" instance is very similar to "Base", except no platform
detection macros are called at all; instead, the platform type is
read via a dynamic PCD set from PlatformPei.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16376 6f19259b-4bc3-4df7-8a09-765794883524
12 files changed:
OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.c
OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.h [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.inf [deleted file]
OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.c [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.c [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c [new file with mode: 0644]
OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf [new file with mode: 0644]
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc