]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/CpuRuntimeDxe/CpuIo.c
According to PI errata 0000654 and 000811, we need use 0xFFFE to instead of 0 for...
[mirror_edk2.git] / Nt32Pkg / CpuRuntimeDxe / CpuIo.c
index b513c7242d79e6fb5e248ba5a63c4a069aa25a28..7f171e6094f4ef9d78c5b980b3500ffb5adab656 100644 (file)
@@ -1,7 +1,7 @@
 /**@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
@@ -28,8 +28,6 @@ Abstract:
 #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
@@ -42,7 +40,7 @@ CpuIoCheckAddressRange (
 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
@@ -83,6 +81,10 @@ Returns:
     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
@@ -91,13 +93,13 @@ Returns:
   //\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
@@ -137,6 +139,10 @@ Returns:
     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
@@ -145,13 +151,13 @@ Returns:
   //\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
@@ -194,7 +200,7 @@ Returns:
 \r
   Address = (UINTN) UserAddress;\r
 \r
-  if (Width >= EfiCpuIoWidthMaximum) {\r
+  if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -206,13 +212,13 @@ Returns:
   //\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
@@ -259,7 +265,7 @@ Returns:
 \r
   Address = (UINTN) UserAddress;\r
 \r
-  if (Width >= EfiCpuIoWidthMaximum) {\r
+  if ((Width < 0) || (Width >= EfiCpuIoWidthMaximum)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -271,7 +277,7 @@ Returns:
   //\r
   // Do nothing for Nt32 version\r
   //\r
-  return EFI_SUCCESS;\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 \r