]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/CpuRuntimeDxe/CpuIo.c
1) Call ProcessNotifyList() to process all Dispatch Notifications after the Memory...
[mirror_edk2.git] / Nt32Pkg / CpuRuntimeDxe / CpuIo.c
index 4aaa431d540582b8d1a35d51f9b4b2acbb21c9f5..7f171e6094f4ef9d78c5b980b3500ffb5adab656 100644 (file)
@@ -1,7 +1,7 @@
-/*++\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
@@ -21,15 +21,13 @@ Abstract:
   the implementations of architectural protocols and the PCI Root\r
   Bridge I/O Protocol.\r
 \r
---*/\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
@@ -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
@@ -319,7 +325,7 @@ Returns:
     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