-/*++\r
+/**@file\r
\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
the implementations of architectural protocols and the PCI Root\r
Bridge I/O Protocol.\r
\r
---*/\r
-\r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
+**/\r
\r
#include <CpuDriver.h>\r
\r
#define IA32_MAX_IO_ADDRESS 0xFFFF\r
#define IA32_MAX_MEM_ADDRESS 0xFFFFFFFF\r
\r
-EFI_CPU_IO_PROTOCOL mCpuIoProtocol;\r
-\r
EFI_STATUS\r
CpuIoCheckAddressRange (\r
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
EFI_STATUS\r
EFIAPI\r
CpuMemoryServiceRead (\r
- IN EFI_CPU_IO_PROTOCOL *This,\r
+ IN EFI_CPU_IO2_PROTOCOL *This,\r
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
IN UINT64 Address,\r
IN UINTN Count,\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
Status = CpuIoCheckAddressRange (Width, Address, Count, Buffer, IA32_MAX_MEM_ADDRESS);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
//\r
// Do nothing for Nt32 version\r
//\r
- return EFI_SUCCESS;\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
CpuMemoryServiceWrite (\r
- IN EFI_CPU_IO_PROTOCOL *This,\r
+ IN EFI_CPU_IO2_PROTOCOL *This,\r
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
IN UINT64 Address,\r
IN UINTN Count,\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
Status = CpuIoCheckAddressRange (Width, Address, Count, Buffer, IA32_MAX_MEM_ADDRESS);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
//\r
// Do nothing for Nt32 version\r
//\r
- return EFI_SUCCESS;\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
CpuIoServiceRead (\r
- IN EFI_CPU_IO_PROTOCOL *This,\r
+ IN EFI_CPU_IO2_PROTOCOL *This,\r
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
IN UINT64 UserAddress,\r
IN UINTN Count,\r
\r
Address = (UINTN) UserAddress;\r
\r
- if (Width >= EfiCpuIoWidthMaximum) {\r
+ if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// Do nothing for Nt32 version\r
//\r
- return EFI_SUCCESS;\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
CpuIoServiceWrite (\r
- IN EFI_CPU_IO_PROTOCOL *This,\r
+ IN EFI_CPU_IO2_PROTOCOL *This,\r
IN EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
IN UINT64 UserAddress,\r
IN UINTN Count,\r
\r
Address = (UINTN) UserAddress;\r
\r
- if (Width >= EfiCpuIoWidthMaximum) {\r
+ if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// Do nothing for Nt32 version\r
//\r
- return EFI_SUCCESS;\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
\r
Count = 1;\r
}\r
\r
- Width = Width & 0x03;\r
+ Width = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
if (Address - 1 + (1 << Width) * Count > Limit) {\r
return EFI_UNSUPPORTED;\r
}\r