/** @file\r
Include file matches things in PI.\r
\r
- Copyright (c) 2006 - 2009, Intel Corporation \r
- All rights reserved. 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
+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
@par Revision Reference:\r
- PI Version 1.0\r
+ PI Version 1.2\r
\r
**/\r
\r
#include <Pi/PiMultiPhase.h>\r
\r
///\r
-/// Global Coherencey Domain types - Memory type\r
+/// Global Coherencey Domain types - Memory type.\r
///\r
typedef enum {\r
///\r
} EFI_GCD_MEMORY_TYPE;\r
\r
///\r
-/// Global Coherencey Domain types - IO type\r
+/// Global Coherencey Domain types - IO type.\r
///\r
typedef enum {\r
///\r
} EFI_GCD_ALLOCATE_TYPE;\r
\r
///\r
-/// EFI_GCD_MEMORY_SPACE_DESCRIPTOR\r
+/// EFI_GCD_MEMORY_SPACE_DESCRIPTOR.\r
/// \r
typedef struct {\r
///\r
/// The physical address of the first byte in the memory region. Type\r
/// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function\r
- /// description in the UEFI 2.0 specification\r
+ /// description in the UEFI 2.0 specification.\r
/// \r
EFI_PHYSICAL_ADDRESS BaseAddress;\r
\r
UINT64 Attributes;\r
///\r
/// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the\r
- /// AddMemorySpace() function description\r
+ /// AddMemorySpace() function description.\r
/// \r
EFI_GCD_MEMORY_TYPE GcdMemoryType;\r
\r
} EFI_GCD_MEMORY_SPACE_DESCRIPTOR;\r
\r
///\r
-/// EFI_GCD_IO_SPACE_DESCRIPTOR\r
+/// EFI_GCD_IO_SPACE_DESCRIPTOR.\r
/// \r
typedef struct {\r
///\r
added to the global coherency domain of the processor.\r
@retval EFI_ACCESS_DENIED One or more bytes of the memory resource range\r
specified by BaseAddress and Length was allocated\r
- in a prior call to AllocateMemorySpace()..\r
+ in a prior call to AllocateMemorySpace().\r
\r
**/\r
typedef\r
resource range specified by BaseAddress and Length.\r
@retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource\r
range specified by BaseAddress and Length.\r
- @retval EFI_ACCESS_DEFINED The attributes for the memory resource range specified by\r
+ @retval EFI_ACCESS_DENIED The attributes for the memory resource range specified by\r
BaseAddress and Length cannot be modified.\r
@retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of\r
the memory resource range.\r
-\r
+ @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is\r
+ not available yet.\r
**/\r
typedef\r
EFI_STATUS\r
IN UINT64 Attributes\r
);\r
\r
+/**\r
+ Modifies the capabilities for a memory region in the global coherency domain of the\r
+ processor.\r
+\r
+ @param BaseAddress The physical address that is the start address of a memory region.\r
+ @param Length The size in bytes of the memory region.\r
+ @param Capabilities The bit mask of capabilities that the memory region supports.\r
+\r
+ @retval EFI_SUCCESS The capabilities were set for the memory region.\r
+ @retval EFI_INVALID_PARAMETER Length is zero.\r
+ @retval EFI_UNSUPPORTED The capabilities specified by Capabilities do not include the\r
+ memory region attributes currently in use.\r
+ @retval EFI_ACCESS_DENIED The capabilities for the memory resource range specified by\r
+ BaseAddress and Length cannot be modified.\r
+ @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the capabilities\r
+ of the memory resource range.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SET_MEMORY_SPACE_CAPABILITIES) (\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN UINT64 Capabilities\r
+ );\r
+\r
/**\r
Returns a map of the memory resources in the global coherency domain of the\r
processor.\r
@retval EFI_SUCCESS One or more DXE driver were dispatched.\r
@retval EFI_NOT_FOUND No DXE drivers were dispatched.\r
@retval EFI_ALREADY_STARTED An attempt is being made to start the DXE Dispatcher recursively.\r
- Thus no action was taken.\r
+ Thus, no action was taken.\r
\r
**/\r
typedef\r
//\r
// DXE Services Table\r
//\r
-#define DXE_SERVICES_SIGNATURE 0x565245535f455844ULL\r
-#define DXE_SERVICES_REVISION ((1<<16) | (20))\r
+#define DXE_SERVICES_SIGNATURE 0x565245535f455844ULL\r
+#define DXE_SPECIFICATION_MAJOR_REVISION 1\r
+#define DXE_SPECIFICATION_MINOR_REVISION 30\r
+#define DXE_SERVICES_REVISION ((DXE_SPECIFICATION_MAJOR_REVISION<<16) | (DXE_SPECIFICATION_MINOR_REVISION))\r
\r
typedef struct {\r
///\r
// Service to process a single firmware volume found in a capsule\r
//\r
EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume;\r
+ //\r
+ // Extensions to Global Coherency Domain Services\r
+ //\r
+ EFI_SET_MEMORY_SPACE_CAPABILITIES SetMemorySpaceCapabilities;\r
} DXE_SERVICES;\r
\r
typedef DXE_SERVICES EFI_DXE_SERVICES;\r
\r
\r
/**\r
- Function prototype for invoking a function on an Application Processor.\r
+ The function prototype for invoking a function on an Application Processor.\r
\r
This definition is used by the UEFI MP Serices Protocol, and the\r
PI SMM System Table.\r
\r
- @param[in,out] Buffer Pointer to private data buffer.\r
+ @param[in,out] Buffer The pointer to private data buffer.\r
**/\r
typedef\r
VOID\r