]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/Cpu.h
MdePkg: Clean up source files
[mirror_edk2.git] / MdePkg / Include / Protocol / Cpu.h
index 042f22068180e9d53af790502d52f686f697136b..68fafb6c4c8d561559547f3089f36f49c095a235 100644 (file)
@@ -1,19 +1,16 @@
 /** @file\r
-  CPU Architectural Protocol as defined in DXE CIS\r
+  CPU Architectural Protocol as defined in PI spec Volume 2 DXE\r
 \r
   This code abstracts the DXE core from processor implementation details.\r
 \r
-  Copyright (c) 2006, 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 - 2018, 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
 \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
-  Version 0.91B.\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
 **/\r
 \r
@@ -27,6 +24,9 @@
 \r
 typedef struct _EFI_CPU_ARCH_PROTOCOL   EFI_CPU_ARCH_PROTOCOL;\r
 \r
+///\r
+/// The type of flush operation\r
+///\r
 typedef enum {\r
   EfiCpuFlushTypeWriteBackInvalidate,\r
   EfiCpuFlushTypeWriteBack,\r
@@ -34,6 +34,9 @@ typedef enum {
   EfiCpuMaxFlushType\r
 } EFI_CPU_FLUSH_TYPE;\r
 \r
+///\r
+/// The type of processor INIT.\r
+///\r
 typedef enum {\r
   EfiCpuInit,\r
   EfiCpuMaxInitType\r
@@ -52,20 +55,20 @@ typedef enum {
 **/\r
 typedef\r
 VOID\r
-(EFIAPI *EFI_CPU_INTERRUPT_HANDLER) (\r
+(EFIAPI *EFI_CPU_INTERRUPT_HANDLER)(\r
   IN CONST  EFI_EXCEPTION_TYPE  InterruptType,\r
   IN CONST  EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
 /**\r
-  This function flushes the range of addresses from Start to Start+Length \r
-  from the processor's data cache. If Start is not aligned to a cache line \r
-  boundary, then the bytes before Start to the preceding cache line boundary \r
-  are also flushed. If Start+Length is not aligned to a cache line boundary, \r
-  then the bytes past Start+Length to the end of the next cache line boundary \r
-  are also flushed. The FlushType of EfiCpuFlushTypeWriteBackInvalidate must be \r
-  supported. If the data cache is fully coherent with all DMA operations, then \r
-  this function can just return EFI_SUCCESS. If the processor does not support \r
+  This function flushes the range of addresses from Start to Start+Length\r
+  from the processor's data cache. If Start is not aligned to a cache line\r
+  boundary, then the bytes before Start to the preceding cache line boundary\r
+  are also flushed. If Start+Length is not aligned to a cache line boundary,\r
+  then the bytes past Start+Length to the end of the next cache line boundary\r
+  are also flushed. The FlushType of EfiCpuFlushTypeWriteBackInvalidate must be\r
+  supported. If the data cache is fully coherent with all DMA operations, then\r
+  this function can just return EFI_SUCCESS. If the processor does not support\r
   flushing a range of the data cache, then the entire data cache can be flushed.\r
 \r
   @param  This             The EFI_CPU_ARCH_PROTOCOL instance.\r
@@ -78,7 +81,7 @@ VOID
 \r
   @retval EFI_SUCCESS           The address range from Start to Start+Length was flushed from\r
                                 the processor's data cache.\r
-  @retval EFI_UNSUPPORTEDT      The processor does not support the cache flush type specified\r
+  @retval EFI_UNSUPPORTED       The processor does not support the cache flush type specified\r
                                 by FlushType.\r
   @retval EFI_DEVICE_ERROR      The address range from Start to Start+Length could not be flushed\r
                                 from the processor's data cache.\r
@@ -86,7 +89,7 @@ VOID
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_FLUSH_DATA_CACHE) (\r
+(EFIAPI *EFI_CPU_FLUSH_DATA_CACHE)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   IN EFI_PHYSICAL_ADDRESS               Start,\r
   IN UINT64                             Length,\r
@@ -95,7 +98,7 @@ EFI_STATUS
 \r
 \r
 /**\r
-  This function enables interrupt processing by the processor. \r
+  This function enables interrupt processing by the processor.\r
 \r
   @param  This             The EFI_CPU_ARCH_PROTOCOL instance.\r
 \r
@@ -105,7 +108,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_ENABLE_INTERRUPT) (\r
+(EFIAPI *EFI_CPU_ENABLE_INTERRUPT)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This\r
   );\r
 \r
@@ -121,14 +124,14 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_DISABLE_INTERRUPT) (\r
+(EFIAPI *EFI_CPU_DISABLE_INTERRUPT)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This\r
   );\r
 \r
 \r
 /**\r
-  This function retrieves the processor's current interrupt state a returns it in \r
-  State. If interrupts are currently enabled, then TRUE is returned. If interrupts \r
+  This function retrieves the processor's current interrupt state a returns it in\r
+  State. If interrupts are currently enabled, then TRUE is returned. If interrupts\r
   are currently disabled, then FALSE is returned.\r
 \r
   @param  This             The EFI_CPU_ARCH_PROTOCOL instance.\r
@@ -141,7 +144,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_GET_INTERRUPT_STATE) (\r
+(EFIAPI *EFI_CPU_GET_INTERRUPT_STATE)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   OUT BOOLEAN                           *State\r
   );\r
@@ -149,9 +152,9 @@ EFI_STATUS
 \r
 /**\r
   This function generates an INIT on the processor. If this function succeeds, then the\r
-  processor will be reset, and control will not be returned to the caller. If InitType is \r
-  not supported by this processor, or the processor cannot programmatically generate an \r
-  INIT without help from external hardware, then EFI_UNSUPPORTED is returned. If an error \r
+  processor will be reset, and control will not be returned to the caller. If InitType is\r
+  not supported by this processor, or the processor cannot programmatically generate an\r
+  INIT without help from external hardware, then EFI_UNSUPPORTED is returned. If an error\r
   occurs attempting to generate an INIT, then EFI_DEVICE_ERROR is returned.\r
 \r
   @param  This             The EFI_CPU_ARCH_PROTOCOL instance.\r
@@ -165,16 +168,16 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_INIT) (\r
+(EFIAPI *EFI_CPU_INIT)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   IN EFI_CPU_INIT_TYPE                  InitType\r
   );\r
 \r
 \r
 /**\r
-  This function registers and enables the handler specified by InterruptHandler for a processor \r
-  interrupt or exception type specified by InterruptType. If InterruptHandler is NULL, then the \r
-  handler for the processor interrupt or exception type specified by InterruptType is uninstalled. \r
+  This function registers and enables the handler specified by InterruptHandler for a processor\r
+  interrupt or exception type specified by InterruptType. If InterruptHandler is NULL, then the\r
+  handler for the processor interrupt or exception type specified by InterruptType is uninstalled.\r
   The installed handler is called once for each processor interrupt or exception.\r
 \r
   @param  This             The EFI_CPU_ARCH_PROTOCOL instance.\r
@@ -194,7 +197,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_REGISTER_INTERRUPT_HANDLER) (\r
+(EFIAPI *EFI_CPU_REGISTER_INTERRUPT_HANDLER)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   IN EFI_EXCEPTION_TYPE                 InterruptType,\r
   IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler\r
@@ -209,7 +212,8 @@ EFI_STATUS
                            must be between 0 and NumberOfTimers-1.\r
   @param  TimerValue       Pointer to the returned timer value.\r
   @param  TimerPeriod      A pointer to the amount of time that passes in femtoseconds for each increment\r
-                           of TimerValue.\r
+                           of TimerValue. If TimerValue does not increment at a predictable rate, then 0 is\r
+                           returned. This parameter is optional and may be NULL.\r
 \r
   @retval EFI_SUCCESS           The processor timer value specified by TimerIndex was returned in TimerValue.\r
   @retval EFI_DEVICE_ERROR      An error occurred attempting to read one of the processor's timers.\r
@@ -219,7 +223,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_GET_TIMER_VALUE) (\r
+(EFIAPI *EFI_CPU_GET_TIMER_VALUE)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   IN UINT32                             TimerIndex,\r
   OUT UINT64                            *TimerValue,\r
@@ -240,6 +244,8 @@ EFI_STATUS
   @retval EFI_ACCESS_DENIED     The attributes for the memory resource range specified by\r
                                 BaseAddress and Length cannot be modified.\r
   @retval EFI_INVALID_PARAMETER Length is zero.\r
+                                Attributes specified an illegal combination of attributes that\r
+                                cannot be set together.\r
   @retval EFI_OUT_OF_RESOURCES  There are not enough system resources to modify the attributes of\r
                                 the memory resource range.\r
   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory\r
@@ -250,7 +256,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_CPU_SET_MEMORY_ATTRIBUTES) (\r
+(EFIAPI *EFI_CPU_SET_MEMORY_ATTRIBUTES)(\r
   IN EFI_CPU_ARCH_PROTOCOL              *This,\r
   IN  EFI_PHYSICAL_ADDRESS              BaseAddress,\r
   IN  UINT64                            Length,\r
@@ -258,59 +264,12 @@ EFI_STATUS
   );\r
 \r
 \r
-/**\r
-  @par Protocol Description:\r
-  The EFI_CPU_ARCH_PROTOCOL is used to abstract processor-specific functions from the DXE\r
-  Foundation. This includes flushing caches, enabling and disabling interrupts, hooking interrupt\r
-  vectors and exception vectors, reading internal processor timers, resetting the processor, and\r
-  determining the processor frequency.\r
-\r
-  @param FlushDataCache\r
-  Flushes a range of the processor's data cache. If the processor does \r
-  not contain a data cache, or the data cache is fully coherent, then this \r
-  function can just return EFI_SUCCESS. If the processor does not support \r
-  flushing a range of addresses from the data cache, then the entire data \r
-  cache must be flushed. \r
-\r
-  @param EnableInterrupt   \r
-  Enables interrupt processing by the processor.\r
-\r
-  @param DisableInterrupt  \r
-  Disables interrupt processing by the processor.\r
-\r
-  @param GetInterruptState \r
-  Retrieves the processor's current interrupt state.\r
-\r
-  @param Init\r
-  Generates an INIT on the processor. If a processor cannot programmatically \r
-  generate an INIT without help from external hardware, then this function \r
-  returns EFI_UNSUPPORTED.\r
-\r
-  @param RegisterInterruptHandler\r
-  Associates an interrupt service routine with one of the processor's interrupt \r
-  vectors. This function is typically used by the EFI_TIMER_ARCH_PROTOCOL to \r
-  hook the timer interrupt in a system. It can also be used by the debugger to \r
-  hook exception vectors.\r
-\r
-  @param GetTimerValue       \r
-  Returns the value of one of the processor's internal timers.\r
-\r
-  @param SetMemoryAttributes \r
-  Attempts to set the attributes of a memory region.\r
-\r
-  @param NumberOfTimers\r
-  The number of timers that are available in a processor. The value in this \r
-  field is a constant that must not be modified after the CPU Architectural \r
-  Protocol is installed. All consumers must treat this as a read-only field.\r
-\r
-  @param DmaBufferAlignment\r
-  The size, in bytes, of the alignment required for DMA buffer allocations. \r
-  This is typically the size of the largest data cache line in the platform. \r
-  The value in this field is a constant that must not be modified after the \r
-  CPU Architectural Protocol is installed. All consumers must treat this as \r
-  a read-only field.\r
-\r
-**/\r
+///\r
+/// The EFI_CPU_ARCH_PROTOCOL is used to abstract processor-specific functions from the DXE\r
+/// Foundation. This includes flushing caches, enabling and disabling interrupts, hooking interrupt\r
+/// vectors and exception vectors, reading internal processor timers, resetting the processor, and\r
+/// determining the processor frequency.\r
+///\r
 struct _EFI_CPU_ARCH_PROTOCOL {\r
   EFI_CPU_FLUSH_DATA_CACHE            FlushDataCache;\r
   EFI_CPU_ENABLE_INTERRUPT            EnableInterrupt;\r
@@ -320,7 +279,19 @@ struct _EFI_CPU_ARCH_PROTOCOL {
   EFI_CPU_REGISTER_INTERRUPT_HANDLER  RegisterInterruptHandler;\r
   EFI_CPU_GET_TIMER_VALUE             GetTimerValue;\r
   EFI_CPU_SET_MEMORY_ATTRIBUTES       SetMemoryAttributes;\r
+  ///\r
+  /// The number of timers that are available in a processor. The value in this\r
+  /// field is a constant that must not be modified after the CPU Architectural\r
+  /// Protocol is installed. All consumers must treat this as a read-only field.\r
+  ///\r
   UINT32                              NumberOfTimers;\r
+  ///\r
+  /// The size, in bytes, of the alignment required for DMA buffer allocations.\r
+  /// This is typically the size of the largest data cache line in the platform.\r
+  /// The value in this field is a constant that must not be modified after the\r
+  /// CPU Architectural Protocol is installed. All consumers must treat this as\r
+  /// a read-only field.\r
+  ///\r
   UINT32                              DmaBufferAlignment;\r
 };\r
 \r