#/*++
# 
# 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:
#    Cpu.inf
#
#  Abstract:
#
#--*/

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = Cpu
  FILE_GUID                      = 10527025-78B2-4d3e-A9DF-41E75C220F5A
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  EDK_RELEASE_VERSION            = 0x00020000
  EFI_SPECIFICATION_VERSION      = 0x00020000

  ENTRY_POINT                    = InitializeCpu

[Packages]
  DuetPkg/DuetPkg.dec
  MdePkg/MdePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  PrintLib
  UefiBootServicesTableLib

[Sources.IA32]
  Ia32/CpuInterrupt.asm |INTEL
  Ia32/CpuInterrupt.asm |MSFT

[Sources.X64]
  X64/CpuInterrupt.asm | INTEL
  X64/CpuInterrupt.asm | MSFT
  
[Sources.common]
  Cpu.c
  CpuDxe.h

[Protocols]
  gEfiCpuArchProtocolGuid
  gEfiLegacyBiosThunkProtocolGuid
  gEfiLegacy8259ProtocolGuid

[Depex]
  gEfiLegacy8259ProtocolGuid