## @file
# Component description file for Cpu module.
#
# This CPU module abstracts the interrupt subsystem of a platform and the CPU-specific setjump-long pair.
# Copyright (c) 2006 - 2011, Intel Corporation. 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.
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = Cpu
  FILE_GUID                      = ee993080-5197-4d4e-b63c-f1f7413e33ce
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeCpu

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  CpuIo.c
  Cpu.c
  CpuDriver.h
  Strings.uni

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  Nt32Pkg/Nt32Pkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib
  HiiLib
  WinNtLib

[Protocols]
  gEfiWinNtIoProtocolGuid                       # PROTOCOL_NOTIFY SOMETIMES_CONSUMED
  gEfiSmbiosProtocolGuid                        # PROTOCOL SOMETIMES_CONSUMED
  gEfiWinNtIoProtocolGuid                       # PROTOCOL ALWAYS_CONSUMED
  gEfiCpuIo2ProtocolGuid                        # PROTOCOL ALWAYS_PRODUCED
  gEfiCpuArchProtocolGuid                       # PROTOCOL ALWAYS_PRODUCED

[Depex]
  gEfiSmbiosProtocolGuid
