From fb0b259e4e440577dcd6ba6722c252d90605b3e9 Mon Sep 17 00:00:00 2001 From: vanjeff Date: Thu, 10 Apr 2008 08:49:28 +0000 Subject: [PATCH] apply for doxgen format. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5038 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Bus/Usb/UsbMassStorageDxe/ComponentName.c | 6 +- MdeModulePkg/Core/RuntimeDxe/Crc32.c | 105 +- MdeModulePkg/Core/RuntimeDxe/Runtime.c | 11 +- MdeModulePkg/Core/RuntimeDxe/Runtime.h | 12 +- .../Console/ConPlatformDxe/ComponentName.c | 25 +- .../Console/ConPlatformDxe/ConPlatform.c | 13 +- .../Console/ConPlatformDxe/ConPlatform.h | 30 +- .../Console/ConSplitterDxe/ComponentName.c | 65 +- .../ConSplitterDxe/ConSplitterGraphics.c | 20 +- .../GraphicsConsoleDxe/ComponentName.c | 25 +- .../GraphicsConsoleDxe/GraphicsConsole.h | 16 +- .../Console/GraphicsConsoleDxe/LaffStd.c | 28 +- .../Console/TerminalDxe/ComponentName.c | 25 +- .../Universal/Console/TerminalDxe/Terminal.c | 32 +- .../Universal/Console/TerminalDxe/Terminal.h | 82 +- .../Console/TerminalDxe/TerminalConIn.c | 494 +++--- .../Console/TerminalDxe/TerminalConOut.c | 249 ++- .../Universal/Console/TerminalDxe/ansi.c | 29 +- .../Universal/Console/TerminalDxe/vtutf8.c | 33 +- .../Universal/DebugPortDxe/ComponentName.c | 31 +- .../Universal/DebugPortDxe/DebugPort.c | 74 +- .../Universal/DebugPortDxe/DebugPort.h | 25 +- .../Universal/DebugSupportDxe/DebugSupport.c | 29 +- MdeModulePkg/Universal/EbcDxe/EbcExecute.c | 1508 +++++++---------- MdeModulePkg/Universal/EbcDxe/EbcExecute.h | 31 +- MdeModulePkg/Universal/EbcDxe/EbcInt.c | 417 ++--- MdeModulePkg/Universal/EbcDxe/EbcInt.h | 29 +- .../Universal/EbcDxe/Ia32/EbcSupport.c | 162 +- .../Universal/EbcDxe/Ipf/EbcSupport.c | 176 +- .../Universal/EbcDxe/Ipf/EbcSupport.h | 15 +- .../Universal/EbcDxe/x64/EbcSupport.c | 164 +- .../MonotonicCounter.c | 16 +- .../MonotonicCounter.h | 27 +- .../Universal/Network/SnpDxe/Callback.c | 17 +- .../Ia32/Ia32PcRtc.c | 19 +- .../PcatRealTimeClockRuntimeDxe/PcRtc.c | 17 +- .../PcatRealTimeClockRuntimeDxe/PcRtc.h | 18 +- .../PcatSingleSegmentPciCfg2Pei/PciCfg2.c | 19 +- 38 files changed, 1729 insertions(+), 2365 deletions(-) diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/ComponentName.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/ComponentName.c index e2e5c4557a..60d51cda24 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/ComponentName.c +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/ComponentName.c @@ -1,4 +1,5 @@ - /*++ +/** @file + UEFI Component Name(2) protocol implementation. Copyright (c) 2004 - 2007, Intel Corporation All rights reserved. This program and the accompanying materials @@ -15,7 +16,8 @@ Module Name: Abstract: ---*/ + +**/ #include diff --git a/MdeModulePkg/Core/RuntimeDxe/Crc32.c b/MdeModulePkg/Core/RuntimeDxe/Crc32.c index f2c8f0227a..0e7e793365 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Crc32.c +++ b/MdeModulePkg/Core/RuntimeDxe/Crc32.c @@ -1,13 +1,14 @@ -/*++ +/** @file + CalculateCrc32 Boot Services as defined in DXE CIS. + +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: @@ -15,22 +16,30 @@ Module Name: Abstract: - CalculateCrc32 Boot Services as defined in DXE CIS. - This Boot Services is in the Runtime Driver because this service is also required by SetVirtualAddressMap() when the EFI System Table and - EFI Runtime Services Table are converted from physical address to + EFI Runtime Services Table are converted from physical address to virtual addresses. This requires that the 32-bit CRC be recomputed. -Revision History: - ---*/ +**/ #include UINT32 mCrcTable[256]; +/** + Calculate CRC32 for target data. + + @param Len The target data. + @param DataSize The target data size. + @param CrcOut The CRC32 for target data. + + @retval EFI_SUCCESS The CRC32 for target data is calculated successfully. + @retval EFI_INVALID_PARAMETER Some parameter is not valid, so the CRC32 is not + calculated. + +**/ EFI_STATUS EFIAPI RuntimeDriverCalculateCrc32 ( @@ -38,25 +47,6 @@ RuntimeDriverCalculateCrc32 ( IN UINTN DataSize, OUT UINT32 *CrcOut ) -/*++ - -Routine Description: - - Calculate CRC32 for target data - -Arguments: - - Data - The target data. - DataSize - The target data size. - CrcOut - The CRC32 for target data. - -Returns: - - EFI_SUCCESS - The CRC32 for target data is calculated successfully. - EFI_INVALID_PARAMETER - Some parameter is not valid, so the CRC32 is not - calculated. - ---*/ { UINT32 Crc; UINTN Index; @@ -75,26 +65,20 @@ Returns: return EFI_SUCCESS; } -STATIC -UINT32 -ReverseBits ( - UINT32 Value - ) -/*++ - -Routine Description: +/** Reverse bits for 32bit data. -Arguments: - - Value - the data to be reversed. - -Returns: + @param Value The data to be reversed. - UINT32 data reversed. + @retrun Data reversed. ---*/ +**/ +STATIC +UINT32 +ReverseBits ( + UINT32 Value + ) { UINTN Index; UINT32 NewValue; @@ -109,25 +93,18 @@ Returns: return NewValue; } -VOID -RuntimeDriverInitializeCrc32Table ( - VOID - ) -/*++ - -Routine Description: - +/** Initialize CRC32 table. -Arguments: - - None. + @param None -Returns: + @retrun None - None. - ---*/ +**/ +VOID +RuntimeDriverInitializeCrc32Table ( + VOID + ) { UINTN TableEntry; UINTN Index; diff --git a/MdeModulePkg/Core/RuntimeDxe/Runtime.c b/MdeModulePkg/Core/RuntimeDxe/Runtime.c index 1f09fa383f..efd7dec05c 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Runtime.c +++ b/MdeModulePkg/Core/RuntimeDxe/Runtime.c @@ -1,6 +1,7 @@ -/*++ +/** @file + Runtime Architectural Protocol as defined in the DXE CIS. -Copyright (c) 2006, Intel Corporation +Copyright (c) 2006, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -15,8 +16,6 @@ Module Name: Abstract: - Runtime Architectural Protocol as defined in the DXE CIS - This code is used to produce the EFI runtime virtual switch over THIS IS VERY DANGEROUS CODE BE VERY CAREFUL IF YOU CHANGE IT @@ -49,7 +48,7 @@ Revision History: Runtime Arch Protocol definition no longer contains CalculateCrc32. Boot Service Table now contains an item named CalculateCrc32. ---*/ +**/ #include "Runtime.h" @@ -367,7 +366,7 @@ Returns: // // UEFI don't require System Configuration Tables Conversion. - // + // // // Convert the runtime fields of the EFI System Table and recompute the CRC-32 diff --git a/MdeModulePkg/Core/RuntimeDxe/Runtime.h b/MdeModulePkg/Core/RuntimeDxe/Runtime.h index 0078da2b91..4ff21ea5b6 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Runtime.h +++ b/MdeModulePkg/Core/RuntimeDxe/Runtime.h @@ -1,25 +1,25 @@ -/*++ +/** @file + Runtime Architectural Protocol as defined in the DXE CIS. -Copyright (c) 2006, Intel Corporation +Copyright (c) 2006, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php - + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + Module Name: Runtime.h Abstract: - Runtime Architectural Protocol as defined in the DXE CIS - This code is used to produce the EFI runtime architectural protocol. ---*/ +**/ #ifndef _RUNTIME_H_ #define _RUNTIME_H_ diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ComponentName.c b/MdeModulePkg/Universal/Console/ConPlatformDxe/ComponentName.c index 075b695682..8dfd8d8ac7 100644 --- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ComponentName.c +++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ComponentName.c @@ -1,21 +1,16 @@ -/*++ +/** @file + UEFI Component Name(2) protocol implementation for ConPlatform driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ComponentName.c - -Abstract: - ---*/ +**/ // // Include common header file for this module. diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c index d5120eb5b2..af2d2221fe 100644 --- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c +++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c @@ -1,6 +1,7 @@ -/*++ +/** @file + Console Platfrom DXE Driver, install Console protocols. -Copyright (c) 2006 - 2007, Intel Corporation +Copyright (c) 2006 - 2007, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,13 +10,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - ConPlatform.c - -Abstract: - ---*/ +**/ #include diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h index 231a20c776..c24d80e0b1 100644 --- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h +++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h @@ -1,21 +1,16 @@ -/*++ +/** @file + Header file for Console Platfrom DXE Driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2007, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ConPlatform.h - -Abstract: - ---*/ +**/ #ifndef CON_MANAGE_H_ #define CON_MANAGE_H_ @@ -24,11 +19,12 @@ Abstract: #include #include #include +#include +#include #include #include #include -#include -#include + #include #include #include diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c index 45b7cf745b..927f7a5a68 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c @@ -1,21 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: +/** @file + UEFI Component Name(2) protocol implementation for ConSplitter driver. - ComponentName.c +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Abstract: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ---*/ +**/ #include "ConSplitter.h" @@ -510,40 +505,40 @@ ConSplitterAbsolutePointerComponentNameGetControllerName ( Arguments: This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. - ControllerHandle - The handle of a controller that the driver specified by - This is managing. This handle specifies the controller + ControllerHandle - The handle of a controller that the driver specified by + This is managing. This handle specifies the controller whose name is to be returned. - ChildHandle - The handle of the child controller to retrieve the name - of. This is an optional parameter that may be NULL. It - will be NULL for device drivers. It will also be NULL - for a bus drivers that wish to retrieve the name of the - bus controller. It will not be NULL for a bus driver + ChildHandle - The handle of the child controller to retrieve the name + of. This is an optional parameter that may be NULL. It + will be NULL for device drivers. It will also be NULL + for a bus drivers that wish to retrieve the name of the + bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller. - Language - A pointer to RFC3066 language identifier. - This is the language of the controller name + Language - A pointer to RFC3066 language identifier. + This is the language of the controller name that that the caller is requesting, and it must match one - of the languages specified in SupportedLanguages. The - number of languages supported by a driver is up to the + of the languages specified in SupportedLanguages. The + number of languages supported by a driver is up to the driver writer. ControllerName - A pointer to the Unicode string to return. This Unicode - string is the name of the controller specified by - ControllerHandle and ChildHandle in the language - specified by Language from the point of view of the - driver specified by This. + string is the name of the controller specified by + ControllerHandle and ChildHandle in the language + specified by Language from the point of view of the + driver specified by This. Returns: EFI_SUCCESS - The Unicode string for the user readable name in the - language specified by Language for the driver + language specified by Language for the driver specified by This was returned in DriverName. EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE. - EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid + EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid EFI_HANDLE. EFI_INVALID_PARAMETER - Language is NULL. EFI_INVALID_PARAMETER - ControllerName is NULL. - EFI_UNSUPPORTED - The driver specified by This is not currently - managing the controller specified by + EFI_UNSUPPORTED - The driver specified by This is not currently + managing the controller specified by ControllerHandle and ChildHandle. - EFI_UNSUPPORTED - The driver specified by This does not support the + EFI_UNSUPPORTED - The driver specified by This does not support the language specified by Language. --*/ diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c index 20f27a20fb..28de49c773 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c @@ -1,6 +1,10 @@ -/*++ +/** @file + Support for ConsoleControl protocol. Support for Graphics output spliter. + Support for DevNull Console Out. This console uses memory buffers + to represnt the console. It allows a console to start very early and + when a new console is added it is synced up with the current console. -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,18 +13,8 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - ConSplitterGraphics.c - -Abstract: +**/ - Support for ConsoleControl protocol. Support for Graphics output spliter. - Support for DevNull Console Out. This console uses memory buffers - to represnt the console. It allows a console to start very early and - when a new console is added it is synced up with the current console - ---*/ #include "ConSplitter.h" diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/ComponentName.c b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/ComponentName.c index 5b4dd01b63..98bbfc2c66 100644 --- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/ComponentName.c +++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/ComponentName.c @@ -1,21 +1,16 @@ -/*++ +/** @file + UEFI Component Name(2) protocol implementation for GraphicsConsole driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ComponentName.c - -Abstract: - ---*/ +**/ #include "GraphicsConsole.h" diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h index 5bdbf7f4cd..7d300a7660 100644 --- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h +++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h @@ -1,6 +1,7 @@ -/*++ +/** @file + Header file for GraphicsConsole driver. -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,16 +10,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - GraphicsConsole.h - -Abstract: - - -Revision History - ---*/ +**/ #ifndef _GRAPHICS_CONSOLE_H #define _GRAPHICS_CONSOLE_H diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/LaffStd.c b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/LaffStd.c index ac8dd16833..76c8fca64f 100644 --- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/LaffStd.c +++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/LaffStd.c @@ -1,24 +1,16 @@ -/*++ +/** @file + Narrow font Data definition for GraphicsConsole driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - LaffStd.c - -Abstract: - - -Revision History - ---*/ +**/ #include "GraphicsConsole.h" diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/ComponentName.c b/MdeModulePkg/Universal/Console/TerminalDxe/ComponentName.c index 11ee906c25..f12b6241b4 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/ComponentName.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/ComponentName.c @@ -1,21 +1,16 @@ -/*++ +/** @file + UEFI Component Name(2) protocol implementation for Terminal driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ComponentName.c - -Abstract: - ---*/ +**/ #include "Terminal.h" diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c index 06c4f66e08..76b603c3a3 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c @@ -1,6 +1,8 @@ -/*++ +/** @file + Produces Simple Text Input Protocl, Simple Text Input Extended Protocol and + Simple Text Output Protocol upon Serial IO Protocol. -Copyright (c) 2006, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,15 +11,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - Terminal.c - -Abstract: - -Revision History: - ---*/ +**/ #include "Terminal.h" @@ -26,7 +20,7 @@ STATIC EFI_STATUS TerminalFreeNotifyList ( IN OUT LIST_ENTRY *ListHead - ); + ); // // Globals @@ -97,7 +91,7 @@ TERMINAL_DEV gTerminalDevTemplate = { { {0} } }, NULL, // ControllerNameTable - NULL, + NULL, INPUT_STATE_DEFAULT, RESET_STATE_DEFAULT, FALSE, @@ -960,15 +954,15 @@ Returns: } while (!IsListEmpty (ListHead)) { NotifyNode = CR ( - ListHead->ForwardLink, - TERMINAL_CONSOLE_IN_EX_NOTIFY, - NotifyEntry, + ListHead->ForwardLink, + TERMINAL_CONSOLE_IN_EX_NOTIFY, + NotifyEntry, TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE ); RemoveEntryList (ListHead->ForwardLink); gBS->FreePool (NotifyNode); } - + return EFI_SUCCESS; } @@ -1344,9 +1338,9 @@ InitializeEfiKeyFiFo ( /** The user Entry Point for module Terminal. The user code starts with this function. - @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] ImageHandle The firmware allocated handle for the EFI image. @param[in] SystemTable A pointer to the EFI System Table. - + @retval EFI_SUCCESS The entry point is executed successfully. @retval other Some error occurs when executing this entry point. diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h index ba573a6efe..86808bbc56 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h @@ -1,24 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - terminal.h +/** @file + Header file for Terminal driver. -Abstract: +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php - -Revision History +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ---*/ +**/ #ifndef _TERMINAL_H #define _TERMINAL_H @@ -212,15 +204,15 @@ Routine Description: Arguments: - RegsiteredData - A pointer to a buffer that is filled in with the keystroke + RegsiteredData - A pointer to a buffer that is filled in with the keystroke state data for the key that was registered. - InputData - A pointer to a buffer that is filled in with the keystroke + InputData - A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. Returns: TRUE - Key be pressed matches a registered key. - FLASE - Match failed. - + FLASE - Match failed. + --*/ ; @@ -230,7 +222,7 @@ TerminalConInWaitForKeyEx ( IN EFI_EVENT Event, IN VOID *Context ) -; +; // // Simple Text Input Ex protocol prototypes // @@ -252,7 +244,7 @@ TerminalConInResetEx ( Returns: EFI_SUCCESS - The device was reset. - EFI_DEVICE_ERROR - The device is not functioning properly and could + EFI_DEVICE_ERROR - The device is not functioning properly and could not be reset. --*/ @@ -267,20 +259,20 @@ TerminalConInReadKeyStrokeEx ( /*++ Routine Description: - Reads the next keystroke from the input device. The WaitForKey Event can + Reads the next keystroke from the input device. The WaitForKey Event can be used to test for existance of a keystroke via WaitForEvent () call. Arguments: This - Protocol instance pointer. - KeyData - A pointer to a buffer that is filled in with the keystroke + KeyData - A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. Returns: EFI_SUCCESS - The keystroke information was returned. EFI_NOT_READY - There was no keystroke data availiable. - EFI_DEVICE_ERROR - The keystroke information was not returned due to + EFI_DEVICE_ERROR - The keystroke information was not returned due to hardware errors. - EFI_INVALID_PARAMETER - KeyData is NULL. + EFI_INVALID_PARAMETER - KeyData is NULL. --*/ ; @@ -298,17 +290,17 @@ TerminalConInSetState ( Arguments: This - Protocol instance pointer. - KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the + KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the state for the input device. - - Returns: + + Returns: EFI_SUCCESS - The device state was set successfully. - EFI_DEVICE_ERROR - The device is not functioning correctly and could + EFI_DEVICE_ERROR - The device is not functioning correctly and could not have the setting adjusted. EFI_UNSUPPORTED - The device does not have the ability to set its state. - EFI_INVALID_PARAMETER - KeyToggleState is NULL. + EFI_INVALID_PARAMETER - KeyToggleState is NULL. ---*/ +--*/ ; EFI_STATUS @@ -326,18 +318,18 @@ TerminalConInRegisterKeyNotify ( Arguments: This - Protocol instance pointer. - KeyData - A pointer to a buffer that is filled in with the keystroke + KeyData - A pointer to a buffer that is filled in with the keystroke information data for the key that was pressed. - KeyNotificationFunction - Points to the function to be called when the key - sequence is typed specified by KeyData. - NotifyHandle - Points to the unique handle assigned to the registered notification. + KeyNotificationFunction - Points to the function to be called when the key + sequence is typed specified by KeyData. + NotifyHandle - Points to the unique handle assigned to the registered notification. Returns: EFI_SUCCESS - The notification function was registered successfully. EFI_OUT_OF_RESOURCES - Unable to allocate resources for necesssary data structures. - EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. - ---*/ + EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. + +--*/ ; EFI_STATUS @@ -352,15 +344,15 @@ TerminalConInUnregisterKeyNotify ( Remove a registered notification function from a particular keystroke. Arguments: - This - Protocol instance pointer. + This - Protocol instance pointer. NotificationHandle - The handle of the notification function being unregistered. Returns: EFI_SUCCESS - The notification function was unregistered successfully. EFI_INVALID_PARAMETER - The NotificationHandle is invalid. - EFI_NOT_FOUND - Can not find the matching entry in database. - ---*/ + EFI_NOT_FOUND - Can not find the matching entry in database. + +--*/ ; VOID diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c index a4ad034989..404e46e0e7 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c @@ -1,14 +1,14 @@ /**@file Implementation for EFI_SIMPLE_TEXT_INPUT_PROTOCOL protocol. - -Copyright (c) 2006 - 2007 Intel Corporation.
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Copyright (c) 2006 - 2007, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ @@ -24,20 +24,20 @@ ReadKeyStrokeWorker ( /*++ Routine Description: - Reads the next keystroke from the input device. The WaitForKey Event can + Reads the next keystroke from the input device. The WaitForKey Event can be used to test for existance of a keystroke via WaitForEvent () call. Arguments: TerminalDevice - Terminal driver private structure - KeyData - A pointer to a buffer that is filled in with the keystroke + KeyData - A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. Returns: EFI_SUCCESS - The keystroke information was returned. EFI_NOT_READY - There was no keystroke data availiable. - EFI_DEVICE_ERROR - The keystroke information was not returned due to + EFI_DEVICE_ERROR - The keystroke information was not returned due to hardware errors. - EFI_INVALID_PARAMETER - KeyData is NULL. + EFI_INVALID_PARAMETER - KeyData is NULL. --*/ { @@ -47,7 +47,7 @@ ReadKeyStrokeWorker ( if (KeyData == NULL) { return EFI_INVALID_PARAMETER; - } + } // // Initialize *Key to nonsense value. @@ -72,12 +72,12 @@ ReadKeyStrokeWorker ( // for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) { CurrentNotify = CR ( - Link, - TERMINAL_CONSOLE_IN_EX_NOTIFY, - NotifyEntry, + Link, + TERMINAL_CONSOLE_IN_EX_NOTIFY, + NotifyEntry, TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE ); - if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) { + if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) { CurrentNotify->KeyNotificationFn (KeyData); } } @@ -95,25 +95,25 @@ TerminalConInReset ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_INPUT_PROTOCOL.Reset(). - This driver only perform dependent serial device reset regardless of + This driver only perform dependent serial device reset regardless of the value of ExtendeVerification - + Arguments: - + This - Indicates the calling context. - + ExtendedVerification - Skip by this driver. - + Returns: - + EFI_SUCCESS - The reset operation succeeds. - + The reset operation succeeds. + EFI_DEVICE_ERROR The dependent serial port reset fails. - + --*/ { EFI_STATUS Status; @@ -158,27 +158,27 @@ TerminalConInReadKeyStroke ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_INPUT_PROTOCOL.ReadKeyStroke(). - + Arguments: - + This - Indicates the calling context. - + Key - A pointer to a buffer that is filled in with the keystroke - information for the key that was sent from terminal. - + information for the key that was sent from terminal. + Returns: - + EFI_SUCCESS The keystroke information is returned successfully. - + EFI_NOT_READY There is no keystroke data available. - + EFI_DEVICE_ERROR The dependent serial device encounters error. - + --*/ { TERMINAL_DEV *TerminalDevice; @@ -213,24 +213,24 @@ Routine Description: Arguments: - RegsiteredData - A pointer to a buffer that is filled in with the keystroke + RegsiteredData - A pointer to a buffer that is filled in with the keystroke state data for the key that was registered. - InputData - A pointer to a buffer that is filled in with the keystroke + InputData - A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. Returns: TRUE - Key be pressed matches a registered key. - FLASE - Match failed. - + FLASE - Match failed. + --*/ { ASSERT (RegsiteredData != NULL && InputData != NULL); - + if ((RegsiteredData->Key.ScanCode != InputData->Key.ScanCode) || (RegsiteredData->Key.UnicodeChar != InputData->Key.UnicodeChar)) { - return FALSE; - } - + return FALSE; + } + return TRUE; } @@ -243,24 +243,24 @@ TerminalConInWaitForKeyEx ( ) /*++ Routine Description: - + Event notification function for EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.WaitForKeyEx event - Signal the event if there is key available - + Signal the event if there is key available + Arguments: - + Event - Indicates the event that invoke this function. - + Context - Indicates the calling context. - + Returns: - + N/A - + --*/ { TERMINAL_DEV *TerminalDevice; - + TerminalDevice = TERMINAL_CON_IN_EX_DEV_FROM_THIS (Context); TerminalConInWaitForKey (Event, &TerminalDevice->SimpleInput); @@ -288,7 +288,7 @@ TerminalConInResetEx ( Returns: EFI_SUCCESS - The device was reset. - EFI_DEVICE_ERROR - The device is not functioning properly and could + EFI_DEVICE_ERROR - The device is not functioning properly and could not be reset. --*/ @@ -304,7 +304,7 @@ TerminalConInResetEx ( } return EFI_SUCCESS; - + } EFI_STATUS @@ -316,20 +316,20 @@ TerminalConInReadKeyStrokeEx ( /*++ Routine Description: - Reads the next keystroke from the input device. The WaitForKey Event can + Reads the next keystroke from the input device. The WaitForKey Event can be used to test for existance of a keystroke via WaitForEvent () call. Arguments: This - Protocol instance pointer. - KeyData - A pointer to a buffer that is filled in with the keystroke + KeyData - A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. Returns: EFI_SUCCESS - The keystroke information was returned. EFI_NOT_READY - There was no keystroke data availiable. - EFI_DEVICE_ERROR - The keystroke information was not returned due to + EFI_DEVICE_ERROR - The keystroke information was not returned due to hardware errors. - EFI_INVALID_PARAMETER - KeyData is NULL. + EFI_INVALID_PARAMETER - KeyData is NULL. --*/ { @@ -337,7 +337,7 @@ TerminalConInReadKeyStrokeEx ( if (KeyData == NULL) { return EFI_INVALID_PARAMETER; - } + } TerminalDevice = TERMINAL_CON_IN_EX_DEV_FROM_THIS (This); @@ -358,17 +358,17 @@ TerminalConInSetState ( Arguments: This - Protocol instance pointer. - KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the + KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the state for the input device. - - Returns: + + Returns: EFI_SUCCESS - The device state was set successfully. - EFI_DEVICE_ERROR - The device is not functioning correctly and could + EFI_DEVICE_ERROR - The device is not functioning correctly and could not have the setting adjusted. EFI_UNSUPPORTED - The device does not have the ability to set its state. - EFI_INVALID_PARAMETER - KeyToggleState is NULL. + EFI_INVALID_PARAMETER - KeyToggleState is NULL. ---*/ +--*/ { if (KeyToggleState == NULL) { return EFI_INVALID_PARAMETER; @@ -392,24 +392,24 @@ TerminalConInRegisterKeyNotify ( Arguments: This - Protocol instance pointer. - KeyData - A pointer to a buffer that is filled in with the keystroke + KeyData - A pointer to a buffer that is filled in with the keystroke information data for the key that was pressed. - KeyNotificationFunction - Points to the function to be called when the key - sequence is typed specified by KeyData. - NotifyHandle - Points to the unique handle assigned to the registered notification. + KeyNotificationFunction - Points to the function to be called when the key + sequence is typed specified by KeyData. + NotifyHandle - Points to the unique handle assigned to the registered notification. Returns: EFI_SUCCESS - The notification function was registered successfully. EFI_OUT_OF_RESOURCES - Unable to allocate resources for necesssary data structures. - EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. - ---*/ + EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. + +--*/ { EFI_STATUS Status; TERMINAL_DEV *TerminalDevice; TERMINAL_CONSOLE_IN_EX_NOTIFY *NewNotify; LIST_ENTRY *Link; - TERMINAL_CONSOLE_IN_EX_NOTIFY *CurrentNotify; + TERMINAL_CONSOLE_IN_EX_NOTIFY *CurrentNotify; if (KeyData == NULL || NotifyHandle == NULL || KeyNotificationFunction == NULL) { return EFI_INVALID_PARAMETER; @@ -422,14 +422,14 @@ TerminalConInRegisterKeyNotify ( // for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) { CurrentNotify = CR ( - Link, - TERMINAL_CONSOLE_IN_EX_NOTIFY, - NotifyEntry, + Link, + TERMINAL_CONSOLE_IN_EX_NOTIFY, + NotifyEntry, TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE ); - if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) { + if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) { if (CurrentNotify->KeyNotificationFn == KeyNotificationFunction) { - *NotifyHandle = CurrentNotify->NotifyHandle; + *NotifyHandle = CurrentNotify->NotifyHandle; return EFI_SUCCESS; } } @@ -437,19 +437,19 @@ TerminalConInRegisterKeyNotify ( // // Allocate resource to save the notification function - // + // NewNotify = (TERMINAL_CONSOLE_IN_EX_NOTIFY *) AllocateZeroPool (sizeof (TERMINAL_CONSOLE_IN_EX_NOTIFY)); if (NewNotify == NULL) { return EFI_OUT_OF_RESOURCES; - } + } - NewNotify->Signature = TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE; + NewNotify->Signature = TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE; NewNotify->KeyNotificationFn = KeyNotificationFunction; CopyMem (&NewNotify->KeyData, KeyData, sizeof (KeyData)); InsertTailList (&TerminalDevice->NotifyList, &NewNotify->NotifyEntry); // // Use gSimpleTextInExNotifyGuid to get a valid EFI_HANDLE - // + // Status = gBS->InstallMultipleProtocolInterfaces ( &NewNotify->NotifyHandle, &gSimpleTextInExNotifyGuid, @@ -457,7 +457,7 @@ TerminalConInRegisterKeyNotify ( NULL ); ASSERT_EFI_ERROR (Status); - *NotifyHandle = NewNotify->NotifyHandle; + *NotifyHandle = NewNotify->NotifyHandle; return EFI_SUCCESS; } @@ -474,15 +474,15 @@ TerminalConInUnregisterKeyNotify ( Remove a registered notification function from a particular keystroke. Arguments: - This - Protocol instance pointer. + This - Protocol instance pointer. NotificationHandle - The handle of the notification function being unregistered. Returns: EFI_SUCCESS - The notification function was unregistered successfully. EFI_INVALID_PARAMETER - The NotificationHandle is invalid. - EFI_NOT_FOUND - Can not find the matching entry in database. - ---*/ + EFI_NOT_FOUND - Can not find the matching entry in database. + +--*/ { EFI_STATUS Status; TERMINAL_DEV *TerminalDevice; @@ -491,8 +491,8 @@ TerminalConInUnregisterKeyNotify ( if (NotificationHandle == NULL) { return EFI_INVALID_PARAMETER; - } - + } + Status = gBS->OpenProtocol ( NotificationHandle, &gSimpleTextInExNotifyGuid, @@ -509,16 +509,16 @@ TerminalConInUnregisterKeyNotify ( for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) { CurrentNotify = CR ( - Link, - TERMINAL_CONSOLE_IN_EX_NOTIFY, - NotifyEntry, + Link, + TERMINAL_CONSOLE_IN_EX_NOTIFY, + NotifyEntry, TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE ); if (CurrentNotify->NotifyHandle == NotificationHandle) { // // Remove the notification function from NotifyList and free resources // - RemoveEntryList (&CurrentNotify->NotifyEntry); + RemoveEntryList (&CurrentNotify->NotifyEntry); Status = gBS->UninstallMultipleProtocolInterfaces ( CurrentNotify->NotifyHandle, &gSimpleTextInExNotifyGuid, @@ -526,12 +526,12 @@ TerminalConInUnregisterKeyNotify ( NULL ); ASSERT_EFI_ERROR (Status); - gBS->FreePool (CurrentNotify); + gBS->FreePool (CurrentNotify); return EFI_SUCCESS; } } - - return EFI_NOT_FOUND; + + return EFI_NOT_FOUND; } @@ -541,7 +541,7 @@ TranslateRawDataToEfiKey ( ) /*++ Step1: Turn raw data into Unicode (according to different encode). - Step2: Translate Unicode into key information. + Step2: Translate Unicode into key information. (according to different terminal standard). --*/ { @@ -579,20 +579,20 @@ TerminalConInWaitForKey ( ) /*++ Routine Description: - + Event notification function for EFI_SIMPLE_TEXT_INPUT_PROTOCOL.WaitForKey event - Signal the event if there is key available - + Signal the event if there is key available + Arguments: - + Event - Indicates the event that invoke this function. - + Context - Indicates the calling context. - + Returns: - + N/A - + --*/ { // @@ -613,23 +613,23 @@ TerminalConInCheckForKey ( ) /*++ Routine Description: - + Check for a pending key in the Efi Key FIFO or Serial device buffer. - + Arguments: - + This - Indicates the calling context. - + Returns: - + EFI_SUCCESS - There is key pending. - + There is key pending. + EFI_NOT_READY There is no key pending. - + EFI_DEVICE_ERROR - + --*/ { EFI_STATUS Status; @@ -741,7 +741,7 @@ GetOneKeyFromSerial ( Get one key out of serial buffer. If serial buffer is empty, return EFI_NOT_READY; if reading serial buffer encounter error, returns EFI_DEVICE_ERROR; - if reading serial buffer successfully, put the fetched key to + if reading serial buffer successfully, put the fetched key to the parameter "Input", and return EFI_SUCCESS. --*/ { @@ -1130,33 +1130,33 @@ UnicodeToEfiKey ( ) /*++ Routine Description: - + Converts a stream of Unicode characters from a terminal input device into EFI Keys that can be read through the Simple Input Protocol. The table below shows the keyboard - input mappings that this function supports. If the ESC sequence listed in one of the + input mappings that this function supports. If the ESC sequence listed in one of the columns is presented, then it is translated into the coorespoding EFI Scan Code. If a matching sequence is not found, then the raw key strokes are converted into EFI Keys. - - 2 seconds are allowed for an ESC sequence to be completed. If the ESC sequence is not - completed in 2 seconds, then the raw key strokes of the partial ESC sequence are + + 2 seconds are allowed for an ESC sequence to be completed. If the ESC sequence is not + completed in 2 seconds, then the raw key strokes of the partial ESC sequence are converted into EFI Keys. - - There is one special input sequence that will force the system to reset. + + There is one special input sequence that will force the system to reset. This is ESC R ESC r ESC R. - + Arguments: TerminaDevice : The terminal device to use to translate raw input into EFI Keys - + Returns: None Symbols used in table below =========================== - ESC = 0x1B - CSI = 0x9B - DEL = 0x7f + ESC = 0x1B + CSI = 0x9B + DEL = 0x7f ^ = CTRL +=========+======+===========+==========+==========+ @@ -1167,7 +1167,7 @@ Symbols used in table below | NULL | 0x00 | | | | | UP | 0x01 | ESC [ A | ESC [ A | ESC [ A | | DOWN | 0x02 | ESC [ B | ESC [ B | ESC [ B | -| RIGHT | 0x03 | ESC [ C | ESC [ C | ESC [ C | +| RIGHT | 0x03 | ESC [ C | ESC [ C | ESC [ C | | LEFT | 0x04 | ESC [ D | ESC [ D | ESC [ D | | HOME | 0x05 | ESC [ H | ESC h | ESC [ H | | END | 0x06 | ESC [ F | ESC k | ESC [ K | @@ -1204,7 +1204,7 @@ ESC R ESC r ESC R = Reset System UINT16 UnicodeChar; EFI_INPUT_KEY Key; BOOLEAN SetDefaultResetState; - + TimerStatus = gBS->CheckEvent (TerminalDevice->TwoSecondTimeOut); if (!EFI_ERROR (TimerStatus)) { @@ -1213,7 +1213,7 @@ ESC R ESC r ESC R = Reset System } while (!IsUnicodeFiFoEmpty(TerminalDevice)) { - + if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) { // // Check to see if the 2 second timer has expired @@ -1252,71 +1252,71 @@ ESC R ESC r ESC R = Reset System } Key.ScanCode = SCAN_NULL; - - if (TerminalDevice->TerminalType == VT100PlusType || + + if (TerminalDevice->TerminalType == VT100PlusType || TerminalDevice->TerminalType == VTUTF8Type) { switch (UnicodeChar) { - case '1': - Key.ScanCode = SCAN_F1; + case '1': + Key.ScanCode = SCAN_F1; break; - case '2': - Key.ScanCode = SCAN_F2; + case '2': + Key.ScanCode = SCAN_F2; break; - case '3': - Key.ScanCode = SCAN_F3; + case '3': + Key.ScanCode = SCAN_F3; break; - case '4': - Key.ScanCode = SCAN_F4; + case '4': + Key.ScanCode = SCAN_F4; break; - case '5': - Key.ScanCode = SCAN_F5; + case '5': + Key.ScanCode = SCAN_F5; break; - case '6': - Key.ScanCode = SCAN_F6; + case '6': + Key.ScanCode = SCAN_F6; break; - case '7': - Key.ScanCode = SCAN_F7; + case '7': + Key.ScanCode = SCAN_F7; break; - case '8': - Key.ScanCode = SCAN_F8; + case '8': + Key.ScanCode = SCAN_F8; break; - case '9': - Key.ScanCode = SCAN_F9; + case '9': + Key.ScanCode = SCAN_F9; break; - case '0': - Key.ScanCode = SCAN_F10; + case '0': + Key.ScanCode = SCAN_F10; break; case '!': Key.ScanCode = SCAN_F11; break; case '@': Key.ScanCode = SCAN_F12; - break; - case 'h': - Key.ScanCode = SCAN_HOME; break; - case 'k': - Key.ScanCode = SCAN_END; + case 'h': + Key.ScanCode = SCAN_HOME; break; - case '+': - Key.ScanCode = SCAN_INSERT; + case 'k': + Key.ScanCode = SCAN_END; break; - case '-': - Key.ScanCode = SCAN_DELETE; + case '+': + Key.ScanCode = SCAN_INSERT; break; - case '/': - Key.ScanCode = SCAN_PAGE_DOWN; + case '-': + Key.ScanCode = SCAN_DELETE; break; - case '?': - Key.ScanCode = SCAN_PAGE_UP; - break; - default : + case '/': + Key.ScanCode = SCAN_PAGE_DOWN; + break; + case '?': + Key.ScanCode = SCAN_PAGE_UP; + break; + default : break; } } - + switch (UnicodeChar) { - case 'R': + case 'R': if (TerminalDevice->ResetState == RESET_STATE_DEFAULT) { TerminalDevice->ResetState = RESET_STATE_ESC_R; SetDefaultResetState = FALSE; @@ -1325,14 +1325,14 @@ ESC R ESC r ESC R = Reset System } Key.ScanCode = SCAN_NULL; break; - case 'r': + case 'r': if (TerminalDevice->ResetState == RESET_STATE_ESC_R) { TerminalDevice->ResetState = RESET_STATE_ESC_R_ESC_r; SetDefaultResetState = FALSE; } Key.ScanCode = SCAN_NULL; break; - default : + default : break; } @@ -1357,40 +1357,40 @@ ESC R ESC r ESC R = Reset System TerminalDevice->ResetState = RESET_STATE_DEFAULT; Key.ScanCode = SCAN_NULL; - + if (TerminalDevice->TerminalType == VT100Type) { switch (UnicodeChar) { - case 'P': - Key.ScanCode = SCAN_F1; + case 'P': + Key.ScanCode = SCAN_F1; break; - case 'Q': - Key.ScanCode = SCAN_F2; + case 'Q': + Key.ScanCode = SCAN_F2; break; - case 'w': - Key.ScanCode = SCAN_F3; + case 'w': + Key.ScanCode = SCAN_F3; break; - case 'x': - Key.ScanCode = SCAN_F4; + case 'x': + Key.ScanCode = SCAN_F4; break; - case 't': - Key.ScanCode = SCAN_F5; + case 't': + Key.ScanCode = SCAN_F5; break; - case 'u': - Key.ScanCode = SCAN_F6; + case 'u': + Key.ScanCode = SCAN_F6; break; - case 'q': - Key.ScanCode = SCAN_F7; + case 'q': + Key.ScanCode = SCAN_F7; break; - case 'r': - Key.ScanCode = SCAN_F8; + case 'r': + Key.ScanCode = SCAN_F8; break; - case 'p': - Key.ScanCode = SCAN_F9; + case 'p': + Key.ScanCode = SCAN_F9; break; - case 'M': - Key.ScanCode = SCAN_F10; + case 'M': + Key.ScanCode = SCAN_F10; break; - default : + default : break; } } @@ -1408,127 +1408,127 @@ ESC R ESC r ESC R = Reset System break; case INPUT_STATE_ESC | INPUT_STATE_LEFTOPENBRACKET: - + TerminalDevice->ResetState = RESET_STATE_DEFAULT; - + Key.ScanCode = SCAN_NULL; - + if (TerminalDevice->TerminalType == PcAnsiType || TerminalDevice->TerminalType == VT100Type || - TerminalDevice->TerminalType == VT100PlusType || + TerminalDevice->TerminalType == VT100PlusType || TerminalDevice->TerminalType == VTUTF8Type) { switch (UnicodeChar) { - case 'A': - Key.ScanCode = SCAN_UP; + case 'A': + Key.ScanCode = SCAN_UP; break; - case 'B': - Key.ScanCode = SCAN_DOWN; + case 'B': + Key.ScanCode = SCAN_DOWN; break; - case 'C': - Key.ScanCode = SCAN_RIGHT; + case 'C': + Key.ScanCode = SCAN_RIGHT; break; - case 'D': - Key.ScanCode = SCAN_LEFT; + case 'D': + Key.ScanCode = SCAN_LEFT; break; - case 'H': + case 'H': if (TerminalDevice->TerminalType == PcAnsiType || TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_HOME; + Key.ScanCode = SCAN_HOME; } break; - case 'F': + case 'F': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_END; } break; - case 'K': + case 'K': if (TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_END; + Key.ScanCode = SCAN_END; } break; - case 'L': - case '@': + case 'L': + case '@': if (TerminalDevice->TerminalType == PcAnsiType || TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_INSERT; + Key.ScanCode = SCAN_INSERT; } break; - case 'X': + case 'X': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_DELETE; } break; - case 'P': + case 'P': if (TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_DELETE; + Key.ScanCode = SCAN_DELETE; } else if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F4; } break; - case 'I': + case 'I': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_PAGE_UP; } - break; - case 'V': + break; + case 'V': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F10; - } - case '?': + } + case '?': if (TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_PAGE_UP; + Key.ScanCode = SCAN_PAGE_UP; } break; - case 'G': + case 'G': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_PAGE_DOWN; } - break; - case 'U': + break; + case 'U': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F9; } - case '/': + case '/': if (TerminalDevice->TerminalType == VT100Type) { - Key.ScanCode = SCAN_PAGE_DOWN; + Key.ScanCode = SCAN_PAGE_DOWN; } break; - case 'M': + case 'M': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F1; } - break; - case 'N': + break; + case 'N': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F2; } - break; - case 'O': + break; + case 'O': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F3; } - break; - case 'Q': + break; + case 'Q': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F5; } - break; - case 'R': + break; + case 'R': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F6; } - break; - case 'S': + break; + case 'S': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F7; } - break; - case 'T': + break; + case 'T': if (TerminalDevice->TerminalType == PcAnsiType) { Key.ScanCode = SCAN_F8; } - break; - default : + break; + default : break; } } @@ -1545,7 +1545,7 @@ ESC R ESC r ESC R = Reset System break; - + default: // // Invalid state. This should never happen. @@ -1564,7 +1564,7 @@ ESC R ESC r ESC R = Reset System if (UnicodeChar == CSI) { TerminalDevice->InputState = INPUT_STATE_CSI; } - + if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) { Status = gBS->SetTimer( TerminalDevice->TwoSecondTimeOut, diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c index 2be62ffa95..65fbfc1ef4 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c @@ -1,23 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +/** @file + Implementation for EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL protocol. -Module Name: +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php - TerminalConOut.c - -Abstract: - +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Revision History ---*/ +**/ #include "Terminal.h" @@ -28,7 +21,7 @@ Revision History // // STATIC UNICODE_TO_CHAR UnicodeToPcAnsiOrAscii[] = { - { BOXDRAW_HORIZONTAL, 0xc4, L'-' }, + { BOXDRAW_HORIZONTAL, 0xc4, L'-' }, { BOXDRAW_VERTICAL, 0xb3, L'|' }, { BOXDRAW_DOWN_RIGHT, 0xda, L'/' }, { BOXDRAW_DOWN_LEFT, 0xbf, L'\\' }, @@ -101,27 +94,27 @@ TerminalConOutReset ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset(). If ExtendeVerification is TRUE, then perform dependent serial device reset, and set display mode to mode 0. If ExtendedVerification is FALSE, only set display mode to mode 0. - + Arguments: - + This - Indicates the calling context. - + ExtendedVerification - Indicates that the driver may perform a more exhaustive verification operation of the device during reset. - + Returns: - + EFI_SUCCESS - The reset operation succeeds. - + The reset operation succeeds. + EFI_DEVICE_ERROR The terminal is not functioning correctly or the serial port reset fails. - + --*/ { EFI_STATUS Status; @@ -172,33 +165,33 @@ TerminalConOutOutputString ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString(). The Unicode string will be converted to terminal expressible data stream and send to terminal via serial port. - - + + Arguments: - + This - Indicates the calling context. - - WString - The Null-terminated Unicode string to be displayed on + + WString - The Null-terminated Unicode string to be displayed on the terminal screen. - + Returns: - + EFI_SUCCESS - The string is output successfully. - + The string is output successfully. + EFI_DEVICE_ERROR The serial port fails to send the string out. - + EFI_WARN_UNKNOWN_GLYPH - Indicates that some of the characters in the Unicode string could not - be rendered and are skipped. - + Indicates that some of the characters in the Unicode string could not + be rendered and are skipped. + EFI_UNSUPPORTED - + --*/ { TERMINAL_DEV *TerminalDevice; @@ -229,7 +222,7 @@ TerminalConOutOutputString ( // Get current display mode // Mode = This->Mode; - + if (Mode->Mode > 2) { return EFI_UNSUPPORTED; } @@ -368,28 +361,28 @@ TerminalConOutTestString ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.TestString(). If one of the characters in the *Wstring is neither valid Unicode drawing characters, not ASCII code, then this function will return EFI_UNSUPPORTED. - - + + Arguments: - + This - Indicates the calling context. - + WString - The Null-terminated Unicode string to be tested. - + Returns: - + EFI_SUCCESS - The terminal is capable of rendering the output string. - + The terminal is capable of rendering the output string. + EFI_UNSUPPORTED - Some of the characters in the Unicode string cannot be rendered. - + Some of the characters in the Unicode string cannot be rendered. + --*/ { TERMINAL_DEV *TerminalDevice; @@ -430,38 +423,38 @@ TerminalConOutQueryMode ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUT_PROTOCOL.QueryMode(). It returns information for an available text mode that the terminal supports. In this driver, we support text mode 80x25 (mode 0), 80x50 (mode 1), 100x31 (mode 2). - - + + Arguments: - + *This Indicates the calling context. - + ModeNumber The mode number to return information on. - + Columns The returned columns of the requested mode. - + Rows - The returned rows of the requested mode. - + The returned rows of the requested mode. + Returns: - + EFI_SUCCESS - The requested mode information is returned. - + The requested mode information is returned. + EFI_UNSUPPORTED - The mode number is not valid. - + The mode number is not valid. + EFI_DEVICE_ERROR - + --*/ { if (This->Mode->MaxMode > 3) { @@ -472,7 +465,7 @@ TerminalConOutQueryMode ( *Columns = MODE0_COLUMN_COUNT; *Rows = MODE0_ROW_COUNT; return EFI_SUCCESS; - } else if (ModeNumber == 1) { + } else if (ModeNumber == 1) { *Columns = MODE1_COLUMN_COUNT; *Rows = MODE1_ROW_COUNT; return EFI_SUCCESS; @@ -493,30 +486,30 @@ TerminalConOutSetMode ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUT.SetMode(). Set the terminal to a specified display mode. - In this driver, we only support mode 0. - + In this driver, we only support mode 0. + Arguments: - + This Indicates the calling context. - + ModeNumber The text mode to set. - + Returns: - + EFI_SUCCESS The requested text mode is set. - + EFI_DEVICE_ERROR The requested text mode cannot be set because of serial device error. - + EFI_UNSUPPORTED - The text mode number is not valid. - + The text mode number is not valid. + --*/ { EFI_STATUS Status; @@ -530,7 +523,7 @@ TerminalConOutSetMode ( if (ModeNumber > 2) { return EFI_UNSUPPORTED; } - + // // Set the current mode // @@ -565,29 +558,29 @@ TerminalConOutSetAttribute ( ) /*++ Routine Description: - - Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute(). - + + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute(). + Arguments: - + This Indicates the calling context. - + Attribute The attribute to set. Only bit0..6 are valid, all other bits are undefined and must be zero. - + Returns: - + EFI_SUCCESS - The requested attribute is set. - + The requested attribute is set. + EFI_DEVICE_ERROR The requested attribute cannot be set due to serial port error. - + EFI_UNSUPPORTED - The attribute requested is not defined by EFI spec. - + The attribute requested is not defined by EFI spec. + --*/ { UINT8 ForegroundControl; @@ -741,28 +734,28 @@ TerminalConOutClearScreen ( ) /*++ Routine Description: - + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.ClearScreen(). - It clears the ANSI terminal's display to the + It clears the ANSI terminal's display to the currently selected background color. - - + + Arguments: - + This Indicates the calling context. Returns: - + EFI_SUCCESS The operation completed successfully. - + EFI_DEVICE_ERROR - The terminal screen cannot be cleared due to serial port error. - + The terminal screen cannot be cleared due to serial port error. + EFI_UNSUPPORTED - The terminal is not in a valid display mode. - + The terminal is not in a valid display mode. + --*/ { EFI_STATUS Status; @@ -795,32 +788,32 @@ TerminalConOutSetCursorPosition ( ) /*++ Routine Description: - - Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition(). - + + Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition(). + Arguments: - + This Indicates the calling context. - + Column The row to set cursor to. - + Row - The column to set cursor to. + The column to set cursor to. Returns: - + EFI_SUCCESS The operation completed successfully. - + EFI_DEVICE_ERROR - The request fails due to serial port error. - + The request fails due to serial port error. + EFI_UNSUPPORTED The terminal is not in a valid text mode, or the cursor position - is invalid for current mode. - + is invalid for current mode. + --*/ { EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode; @@ -885,27 +878,27 @@ TerminalConOutEnableCursor ( ) /*++ Routine Description: - + Implements SIMPLE_TEXT_OUTPUT.EnableCursor(). - In this driver, the cursor cannot be hidden. - + In this driver, the cursor cannot be hidden. + Arguments: - + This Indicates the calling context. - + Visible If TRUE, the cursor is set to be visible, - If FALSE, the cursor is set to be invisible. + If FALSE, the cursor is set to be invisible. Returns: - + EFI_SUCCESS The request is valid. - + EFI_UNSUPPORTED - The terminal does not support cursor hidden. - + The terminal does not support cursor hidden. + --*/ { if (!Visible) { diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/ansi.c b/MdeModulePkg/Universal/Console/TerminalDxe/ansi.c index babc4bbedc..813779e0d1 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/ansi.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/ansi.c @@ -1,23 +1,16 @@ -/*++ +/** @file + Provides misc functions upon ansi. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ansi.c - -Abstract: - - -Revision History ---*/ +**/ #include "Terminal.h" @@ -56,7 +49,7 @@ AnsiTestString ( // for (; *WString != CHAR_NULL; WString++) { - if ( !(TerminalIsValidAscii (*WString) || + if ( !(TerminalIsValidAscii (*WString) || TerminalIsValidEfiCntlChar (*WString) || TerminalIsValidTextGraphics (*WString, &GraphicChar, NULL) )) { diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/vtutf8.c b/MdeModulePkg/Universal/Console/TerminalDxe/vtutf8.c index 648344a279..286c937d42 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/vtutf8.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/vtutf8.c @@ -1,23 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - vtutf8.c - -Abstract: - - -Revision History ---*/ +/**@file + Implementation translation among different code tyies. + +Copyright (c) 2006, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #include "Terminal.h" diff --git a/MdeModulePkg/Universal/DebugPortDxe/ComponentName.c b/MdeModulePkg/Universal/DebugPortDxe/ComponentName.c index 321f57bf42..ae0233596f 100644 --- a/MdeModulePkg/Universal/DebugPortDxe/ComponentName.c +++ b/MdeModulePkg/Universal/DebugPortDxe/ComponentName.c @@ -1,21 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - ComponentName.c - -Abstract: - Component name protocol member functions for DebugPort... - ---*/ +/** @file + UEFI Component Name(2) protocol implementation for DebugPort driver. + +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #include "DebugPort.h" diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c index e3e47302a3..914a8c703c 100644 --- a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c +++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c @@ -1,29 +1,19 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: +/** @file + Top level C file for debugport driver. Contains initialization function. + This driver layers on top of SerialIo. + ALL CODE IN THE SERIALIO STACK MUST BE RE-ENTRANT AND CALLABLE FROM + INTERRUPT CONTEXT - DebugPort.c +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Abstract: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - Top level C file for debugport driver. Contains initialization function. - This driver layers on top of SerialIo. - - ALL CODE IN THE SERIALIO STACK MUST BE RE-ENTRANT AND CALLABLE FROM - INTERRUPT CONTEXT. - -Revision History - ---*/ +**/ #include "DebugPort.h" @@ -41,7 +31,7 @@ GetDebugPortVariable ( Routine Description: Local worker function to obtain device path information from DebugPort variable. Records requested settings in DebugPort device structure. - + Arguments: DEBUGPORT_DEVICE *DebugPortDevice, @@ -145,8 +135,8 @@ InitializeDebugPortDriver ( Routine Description: Driver entry point. Reads DebugPort variable to determine what device and settings to use as the debug port. Binds exclusively to SerialIo. Reverts to defaults \ - if no variable is found. - + if no variable is found. + Creates debugport and devicepath protocols on new handle. Arguments: @@ -215,13 +205,13 @@ DebugPortSupported ( Routine Description: Checks to see that there's not already a DebugPort interface somewhere. If so, fail. - + If there's a DEBUGPORT variable, the device path must match exactly. If there's no DEBUGPORT variable, then device path is not checked and does not matter. - + Checks to see that there's a serial io interface on the controller handle that can be bound BY_DRIVER | EXCLUSIVE. - + If all these tests succeed, then we return EFI_SUCCESS, else, EFI_UNSUPPORTED or other error returned by OpenProtocol. @@ -229,12 +219,12 @@ Arguments: This ControllerHandle RemainingDevicePath - + Returns: EFI_UNSUPPORTED EFI_OUT_OF_RESOURCES EFI_SUCCESS - + --*/ { EFI_STATUS Status; @@ -332,7 +322,7 @@ Arguments: This ControllerHandle RemainingDevicePath - + Returns: EFI_OUT_OF_RESOURCES EFI_SUCCESS @@ -501,11 +491,11 @@ Routine Description: Arguments: Per UEFI 2.0 driver model - + Returns: EFI_UNSUPPORTED EFI_SUCCESS - + --*/ { EFI_STATUS Status; @@ -590,9 +580,9 @@ Routine Description: We cannot call SerialIo:SetAttributes because it uses pool services, which use locks, which affect TPL, so it's not interrupt context safe or re-entrant. SerialIo:Reset() calls SetAttributes, so it can't be used either. - - The port itself should be fine since it was set up during initialization. - + + The port itself should be fine since it was set up during initialization. + Arguments: This @@ -626,7 +616,7 @@ DebugPortRead ( Routine Description: DebugPort protocol member function. Calls SerialIo:Read() after setting if it's different than the last SerialIo access. - + Arguments: IN EFI_DEBUGPORT_PROTOCOL *This IN UINT32 Timeout, @@ -686,11 +676,11 @@ Routine Description: DebugPort protocol member function. Calls SerialIo:Write() Writes 8 bytes at a time and does a GetControl between 8 byte writes to help insure reads are interspersed This is poor-man's flow control.. - + Arguments: This - Pointer to DebugPort protocol Timeout - Timeout value - BufferSize - On input, the size of Buffer. + BufferSize - On input, the size of Buffer. On output, the amount of data actually written. Buffer - Pointer to buffer to write @@ -741,7 +731,7 @@ DebugPortPoll ( Routine Description: DebugPort protocol member function. Calls SerialIo:Write() after setting if it's different than the last SerialIo access. - + Arguments: IN EFI_DEBUGPORT_PROTOCOL *This @@ -785,7 +775,7 @@ Routine Description: Unload function that is registered in the LoadImage protocol. It un-installs protocols produced and deallocates pool used by the driver. Called by the core when unloading the driver. - + Arguments: EFI_HANDLE ImageHandle diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.h b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.h index de2fd4e50b..f19de75809 100644 --- a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.h +++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.h @@ -1,21 +1,16 @@ -/*++ +/** @file + Definitions and prototypes for DebugPort driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: - DebugPort.h +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Abstract: - Definitions and prototypes for DebugPort driver - ---*/ +**/ #ifndef __DEBUGPORT_H__ #define __DEBUGPORT_H__ diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c index a0ec6c5934..33f2ad1269 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c +++ b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c @@ -1,25 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: +/** @file + Top level C file for debug support driver. Contains initialization function. - DebugSupport.c +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Abstract: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - Top level C file for debug support driver. Contains initialization function. - -Revision History - ---*/ +**/ // // private header files diff --git a/MdeModulePkg/Universal/EbcDxe/EbcExecute.c b/MdeModulePkg/Universal/EbcDxe/EbcExecute.c index 174e774de3..d44892e84a 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcExecute.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcExecute.c @@ -1,23 +1,16 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - EbcExecute.c +/** @file + Contains code that implements the virtual machine. -Abstract: +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php - Contains code that implements the virtual machine. +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ---*/ +**/ #include "EbcInt.h" #include "EbcExecute.h" @@ -573,31 +566,25 @@ static CONST UINT8 mJMPLen[] = { 2, 2, 6, 10 }; // EFI_GUID mEbcSimpleDebuggerProtocolGuid = EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL_GUID; -EFI_STATUS -EbcExecuteInstructions ( - IN EFI_EBC_VM_TEST_PROTOCOL *This, - IN VM_CONTEXT *VmPtr, - IN OUT UINTN *InstructionCount - ) -/*++ -Routine Description: - +/** Given a pointer to a new VM context, execute one or more instructions. This function is only used for test purposes via the EBC VM test protocol. -Arguments: - - This - pointer to protocol interface - VmPtr - pointer to a VM context - InstructionCount - how many instructions to execute. 0 if don't count. + @param This pointer to protocol interface + @param VmPtr pointer to a VM context + @param InstructionCount how many instructions to execute. 0 if don't count. -Returns: + @return EFI_UNSUPPORTED + @return EFI_SUCCESS - EFI_UNSUPPORTED - EFI_SUCCESS - ---*/ +**/ +EFI_STATUS +EbcExecuteInstructions ( + IN EFI_EBC_VM_TEST_PROTOCOL *This, + IN VM_CONTEXT *VmPtr, + IN OUT UINTN *InstructionCount + ) { UINTN ExecFunc; EFI_STATUS Status; @@ -641,25 +628,19 @@ Returns: return Status; } -EFI_STATUS -EbcExecute ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - +/** Execute an EBC image from an entry point or from a published protocol. -Arguments: - - VmPtr - pointer to prepared VM context. + @param VmPtr pointer to prepared VM context. -Returns: + @return Standard EBC status. - Standard EBC status. - ---*/ +**/ +EFI_STATUS +EbcExecute ( + IN VM_CONTEXT *VmPtr + ) { UINTN ExecFunc; UINT8 StackCorrupted; @@ -770,39 +751,28 @@ Done: return Status; } -STATIC -EFI_STATUS -ExecuteMOVxx ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - +/** Execute the MOVxx instructions. -Arguments: - - VmPtr - pointer to a VM context. - -Returns: + @param VmPtr pointer to a VM context. - EFI_UNSUPPORTED - EFI_SUCCESS + @return EFI_UNSUPPORTED + @return EFI_SUCCESS + @return Instruction format: + @return MOV[b|w|d|q|n]{w|d} {@}R1 {Index16|32}, {@}R2 {Index16|32} + @return MOVqq {@}R1 {Index64}, {@}R2 {Index64} + @return Copies contents of [R2] -> [R1], zero extending where required. + @return First character indicates the size of the move. + @return Second character indicates the size of the index(s). + @return Invalid to have R1 direct with index. -Instruction format: - - MOV[b|w|d|q|n]{w|d} {@}R1 {Index16|32}, {@}R2 {Index16|32} - MOVqq {@}R1 {Index64}, {@}R2 {Index64} - - Copies contents of [R2] -> [R1], zero extending where required. - - First character indicates the size of the move. - Second character indicates the size of the index(s). - - Invalid to have R1 direct with index. - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteMOVxx ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 OpcMasked; @@ -1059,27 +1029,21 @@ Instruction format: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteBREAK ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - +/** Execute the EBC BREAK instruction -Arguments: - - VmPtr - pointer to current VM context + @param VmPtr pointer to current VM context -Returns: + @return EFI_UNSUPPORTED + @return EFI_SUCCESS - EFI_UNSUPPORTED - EFI_SUCCESS - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteBREAK ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Operands; VOID *EbcEntryPoint; @@ -1175,39 +1139,30 @@ Returns: return EFI_SUCCESS; } + +/** + Execute the JMP instruction + + @param VmPtr pointer to VM context + + @return Standard EFI_STATUS + @return Instruction syntax: + @return JMP64{cs|cc} Immed64 + @return JMP32{cs|cc} {@}R1 {Immed32|Index32} + @return Encoding: + @retval b0.7 immediate data present + @retval b0.6 1 = 64 bit immediate data 0 = 32 bit immediate data + @retval b1.7 1 = conditional b1.6 1 = CS (condition set) 0 = CC + (condition clear) b1.4 1 = relative address 0 = + absolute address b1.3 1 = operand1 indirect b1.2-0 + operand 1 + +**/ STATIC EFI_STATUS ExecuteJMP ( IN VM_CONTEXT *VmPtr ) -/*++ - -Routine Description: - Execute the JMP instruction - -Arguments: - VmPtr - pointer to VM context - -Returns: - Standard EFI_STATUS - -Instruction syntax: - JMP64{cs|cc} Immed64 - JMP32{cs|cc} {@}R1 {Immed32|Index32} - -Encoding: - b0.7 - immediate data present - b0.6 - 1 = 64 bit immediate data - 0 = 32 bit immediate data - b1.7 - 1 = conditional - b1.6 1 = CS (condition set) - 0 = CC (condition clear) - b1.4 1 = relative address - 0 = absolute address - b1.3 1 = operand1 indirect - b1.2-0 operand 1 - ---*/ { UINT8 Opcode; UINT8 CompareSet; @@ -1354,26 +1309,22 @@ Encoding: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteJMP8 ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC JMP8 instruction -Arguments: - VmPtr - pointer to a VM context - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context -Instruction syntax: - JMP8{cs|cc} Offset/2 + @return Standard EFI_STATUS + @return Instruction syntax: + @return JMP8{cs|cc} Offset/2 ---*/ +**/ +STATIC +EFI_STATUS +ExecuteJMP8 ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 ConditionFlag; @@ -1408,38 +1359,27 @@ Instruction syntax: return EFI_SUCCESS; } + +/** + Execute the EBC MOVI + + @param VmPtr pointer to a VM context + + @return Standard EFI_STATUS + @return Instruction syntax: + @return MOVI[b|w|d|q][w|d|q] {@}R1 {Index16}, ImmData16|32|64 + @return First variable character specifies the move size + @return Second variable character specifies size of the immediate data + @return Sign-extend the immediate data to the size of the operation, and zero-extend + @return if storing to a register. + @return Operand1 direct with index/immed is invalid. + +**/ STATIC EFI_STATUS ExecuteMOVI ( IN VM_CONTEXT *VmPtr ) -/*++ - -Routine Description: - - Execute the EBC MOVI - -Arguments: - - VmPtr - pointer to a VM context - -Returns: - - Standard EFI_STATUS - -Instruction syntax: - - MOVI[b|w|d|q][w|d|q] {@}R1 {Index16}, ImmData16|32|64 - - First variable character specifies the move size - Second variable character specifies size of the immediate data - - Sign-extend the immediate data to the size of the operation, and zero-extend - if storing to a register. - - Operand1 direct with index/immed is invalid. - ---*/ { UINT8 Opcode; UINT8 Operands; @@ -1539,31 +1479,23 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteMOVIn ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - +/** Execute the EBC MOV immediate natural. This instruction moves an immediate index value into a register or memory location. -Arguments: - - VmPtr - pointer to a VM context - -Returns: - - Standard EFI_STATUS - -Instruction syntax: + @param VmPtr pointer to a VM context - MOVIn[w|d|q] {@}R1 {Index16}, Index16|32|64 + @return Standard EFI_STATUS + @return Instruction syntax: + @return MOVIn[w|d|q] {@}R1 {Index16}, Index16|32|64 ---*/ +**/ +STATIC +EFI_STATUS +ExecuteMOVIn ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -1647,31 +1579,23 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteMOVREL ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - +/** Execute the EBC MOVREL instruction. Dest <- Ip + ImmData -Arguments: - - VmPtr - pointer to a VM context - -Returns: + @param VmPtr pointer to a VM context - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return MOVREL[w|d|q] {@}R1 {Index16}, ImmData16|32|64 -Instruction syntax: - - MOVREL[w|d|q] {@}R1 {Index16}, ImmData16|32|64 - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteMOVREL ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -1754,36 +1678,27 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteMOVsnw ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - - Execute the EBC MOVsnw instruction. This instruction loads a signed +/** + Execute the EBC MOVsnw instruction. This instruction loads a signed natural value from memory or register to another memory or register. On 32-bit machines, the value gets sign-extended to 64 bits if the destination is a register. -Arguments: + @param VmPtr pointer to a VM context - VmPtr - pointer to a VM context + @return Standard EFI_STATUS + @return Instruction syntax: + @return MOVsnw {@}R1 {Index16}, {@}R2 {Index16|Immed16} + @return 0:7 1=>operand1 index present + @return 0:6 1=>operand2 index present -Returns: - - Standard EFI_STATUS - -Instruction syntax: - - MOVsnw {@}R1 {Index16}, {@}R2 {Index16|Immed16} - - 0:7 1=>operand1 index present - 0:6 1=>operand2 index present - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteMOVsnw ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -1853,36 +1768,27 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteMOVsnd ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: - - Execute the EBC MOVsnw instruction. This instruction loads a signed +/** + Execute the EBC MOVsnw instruction. This instruction loads a signed natural value from memory or register to another memory or register. On 32-bit machines, the value gets sign-extended to 64 bits if the destination is a register. -Arguments: - - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: + @return Standard EFI_STATUS + @return Instruction syntax: + @return MOVsnd {@}R1 {Indx32}, {@}R2 {Index32|Immed32} + @return 0:7 1=>operand1 index present + @return 0:6 1=>operand2 index present - Standard EFI_STATUS - -Instruction syntax: - - MOVsnd {@}R1 {Indx32}, {@}R2 {Index32|Immed32} - - 0:7 1=>operand1 index present - 0:6 1=>operand2 index present - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteMOVsnd ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -1952,26 +1858,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecutePUSHn ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC PUSHn instruction -Arguments: - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return PUSHn {@}R1 {Index16|Immed16} -Instruction syntax: - PUSHn {@}R1 {Index16|Immed16} - ---*/ +**/ +STATIC +EFI_STATUS +ExecutePUSHn ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2015,26 +1917,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecutePUSH ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC PUSH instruction -Arguments: - VmPtr - pointer to a VM context - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context -Instruction syntax: - PUSH[32|64] {@}R1 {Index16|Immed16} + @return Standard EFI_STATUS + @return Instruction syntax: + @return PUSH[32|64] {@}R1 {Index16|Immed16} ---*/ +**/ +STATIC +EFI_STATUS +ExecutePUSH ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2095,26 +1993,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecutePOPn ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC POPn instruction -Arguments: - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return POPn {@}R1 {Index16|Immed16} -Instruction syntax: - POPn {@}R1 {Index16|Immed16} - ---*/ +**/ +STATIC +EFI_STATUS +ExecutePOPn ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2158,26 +2052,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecutePOP ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC POP instruction -Arguments: - VmPtr - pointer to a VM context - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context -Instruction syntax: - POP {@}R1 {Index16|Immed16} + @return Standard EFI_STATUS + @return Instruction syntax: + @return POP {@}R1 {Index16|Immed16} ---*/ +**/ +STATIC +EFI_STATUS +ExecutePOP ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2241,32 +2131,26 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteCALL ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Implements the EBC CALL instruction. - - Instruction format: - - CALL64 Immed64 - CALL32 {@}R1 {Immed32|Index32} - CALLEX64 Immed64 - CALLEX16 {@}R1 {Immed32} - + Instruction format: + CALL64 Immed64 + CALL32 {@}R1 {Immed32|Index32} + CALLEX64 Immed64 + CALLEX16 {@}R1 {Immed32} If Rx == R0, then it's a PC relative call to PC = PC + imm32. - -Arguments: - VmPtr - pointer to a VM context. -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context. + + @return Standard EFI_STATUS ---*/ +**/ +STATIC +EFI_STATUS +ExecuteCALL ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2384,26 +2268,22 @@ Returns: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteRET ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC RET instruction -Arguments: - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return RET -Instruction syntax: - RET - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteRET ( + IN VM_CONTEXT *VmPtr + ) { // // If we're at the top of the stack, then simply set the done @@ -2435,26 +2315,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteCMP ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC CMP instruction -Arguments: - VmPtr - pointer to a VM context - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context -Instruction syntax: - CMP[32|64][eq|lte|gte|ulte|ugte] R1, {@}R2 {Index16|Immed16} + @return Standard EFI_STATUS + @return Instruction syntax: + @return CMP[32|64][eq|lte|gte|ulte|ugte] R1, {@}R2 {Index16|Immed16} ---*/ +**/ +STATIC +EFI_STATUS +ExecuteCMP ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2599,26 +2475,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteCMPI ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC CMPI instruction -Arguments: - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return CMPI[32|64]{w|d}[eq|lte|gte|ulte|ugte] {@}Rx {Index16}, Immed16|Immed32 -Instruction syntax: - CMPI[32|64]{w|d}[eq|lte|gte|ulte|ugte] {@}Rx {Index16}, Immed16|Immed32 - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteCMPI ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Opcode; UINT8 Operands; @@ -2781,6 +2653,19 @@ Instruction syntax: return EFI_SUCCESS; } + +/** + Execute the EBC NOT instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return ~Op2 + @return Instruction syntax: + @return NOT[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteNOT ( @@ -2788,27 +2673,23 @@ ExecuteNOT ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ +{ + return ~Op2; +} -Routine Description: - Execute the EBC NOT instruction -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction +/** + Execute the EBC NEG instruction -Returns: - ~Op2 + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction -Instruction syntax: - NOT[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ -{ - return ~Op2; -} + @return Op2 * -1 + @return Instruction syntax: + @return NEG[32|64] {@}R1, {@}R2 {Index16|Immed16} +**/ STATIC UINT64 ExecuteNEG ( @@ -2816,27 +2697,23 @@ ExecuteNEG ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ +{ + return ~Op2 + 1; +} -Routine Description: - Execute the EBC NEG instruction -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction +/** + Execute the EBC ADD instruction -Returns: - Op2 * -1 + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction -Instruction syntax: - NEG[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ -{ - return ~Op2 + 1; -} + @return Op1 + Op2 + @return Instruction syntax: + @return ADD[32|64] {@}R1, {@}R2 {Index16} +**/ STATIC UINT64 ExecuteADD ( @@ -2844,28 +2721,23 @@ ExecuteADD ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ +{ + return Op1 + Op2; +} -Routine Description: - - Execute the EBC ADD instruction -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction +/** + Execute the EBC SUB instruction -Returns: - Op1 + Op2 + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction -Instruction syntax: - ADD[32|64] {@}R1, {@}R2 {Index16} - ---*/ -{ - return Op1 + Op2; -} + @retval Op1 Op2 Standard EFI_STATUS + @return Instruction syntax: + @return SUB[32|64] {@}R1, {@}R2 {Index16|Immed16} +**/ STATIC UINT64 ExecuteSUB ( @@ -2873,24 +2745,6 @@ ExecuteSUB ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC SUB instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 - Op2 - Standard EFI_STATUS - -Instruction syntax: - SUB[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return (UINT64) ((INT64) ((INT64) Op1 - (INT64) Op2)); @@ -2899,6 +2753,19 @@ Instruction syntax: } } + +/** + Execute the EBC MUL instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 * Op2 + @return Instruction syntax: + @return MUL[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteMUL ( @@ -2906,24 +2773,6 @@ ExecuteMUL ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - - Execute the EBC MUL instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 * Op2 - -Instruction syntax: - MUL[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return MultS64x64 ((INT64)Op1, (INT64)Op2); @@ -2932,6 +2781,19 @@ Instruction syntax: } } + +/** + Execute the EBC MULU instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return (unsigned)Op1 * (unsigned)Op2 + @return Instruction syntax: + @return MULU[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteMULU ( @@ -2939,23 +2801,6 @@ ExecuteMULU ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC MULU instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - (unsigned)Op1 * (unsigned)Op2 - -Instruction syntax: - MULU[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return MultU64x64 (Op1, Op2); @@ -2964,6 +2809,19 @@ Instruction syntax: } } + +/** + Execute the EBC DIV instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1/Op2 + @return Instruction syntax: + @return DIV[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteDIV ( @@ -2971,24 +2829,6 @@ ExecuteDIV ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - - Execute the EBC DIV instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1/Op2 - -Instruction syntax: - DIV[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { INT64 Remainder; @@ -3012,6 +2852,19 @@ Instruction syntax: } } + +/** + Execute the EBC DIVU instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return (unsigned)Op1 / (unsigned)Op2 + @return Instruction syntax: + @return DIVU[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteDIVU ( @@ -3019,23 +2872,6 @@ ExecuteDIVU ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC DIVU instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - (unsigned)Op1 / (unsigned)Op2 - -Instruction syntax: - DIVU[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { UINT64 Remainder; @@ -3061,6 +2897,19 @@ Instruction syntax: } } + +/** + Execute the EBC MOD instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 MODULUS Op2 + @return Instruction syntax: + @return MOD[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteMOD ( @@ -3068,23 +2917,6 @@ ExecuteMOD ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC MOD instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 MODULUS Op2 - -Instruction syntax: - MOD[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { INT64 Remainder; @@ -3104,6 +2936,19 @@ Instruction syntax: } } + +/** + Execute the EBC MODU instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 UNSIGNED_MODULUS Op2 + @return Instruction syntax: + @return MODU[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteMODU ( @@ -3111,23 +2956,6 @@ ExecuteMODU ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC MODU instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 UNSIGNED_MODULUS Op2 - -Instruction syntax: - MODU[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { UINT64 Remainder; @@ -3147,6 +2975,19 @@ Instruction syntax: } } + +/** + Execute the EBC AND instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 AND Op2 + @return Instruction syntax: + @return AND[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteAND ( @@ -3154,27 +2995,23 @@ ExecuteAND ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ +{ + return Op1 & Op2; +} -Routine Description: - Execute the EBC AND instruction -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction +/** + Execute the EBC OR instruction -Returns: - Op1 AND Op2 + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction -Instruction syntax: - AND[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ -{ - return Op1 & Op2; -} + @return Op1 OR Op2 + @return Instruction syntax: + @return OR[32|64] {@}R1, {@}R2 {Index16|Immed16} +**/ STATIC UINT64 ExecuteOR ( @@ -3182,27 +3019,23 @@ ExecuteOR ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC OR instruction +{ + return Op1 | Op2; +} -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction -Returns: - Op1 OR Op2 +/** + Execute the EBC XOR instruction -Instruction syntax: - OR[32|64] {@}R1, {@}R2 {Index16|Immed16} + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction ---*/ -{ - return Op1 | Op2; -} + @return Op1 XOR Op2 + @return Instruction syntax: + @return XOR[32|64] {@}R1, {@}R2 {Index16|Immed16} +**/ STATIC UINT64 ExecuteXOR ( @@ -3210,27 +3043,23 @@ ExecuteXOR ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC XOR instruction +{ + return Op1 ^ Op2; +} -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction -Returns: - Op1 XOR Op2 +/** + Execute the EBC SHL shift left instruction -Instruction syntax: - XOR[32|64] {@}R1, {@}R2 {Index16|Immed16} + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction ---*/ -{ - return Op1 ^ Op2; -} + @return Op1 << Op2 + @return Instruction syntax: + @return SHL[32|64] {@}R1, {@}R2 {Index16|Immed16} +**/ STATIC UINT64 ExecuteSHL ( @@ -3238,24 +3067,6 @@ ExecuteSHL ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - - Execute the EBC SHL shift left instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 << Op2 - -Instruction syntax: - SHL[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return LShiftU64 (Op1, (UINTN)Op2); @@ -3264,6 +3075,19 @@ Instruction syntax: } } + +/** + Execute the EBC SHR instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 >> Op2 (unsigned operands) + @return Instruction syntax: + @return SHR[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteSHR ( @@ -3271,23 +3095,6 @@ ExecuteSHR ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC SHR instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 >> Op2 (unsigned operands) - -Instruction syntax: - SHR[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return RShiftU64 (Op1, (UINTN)Op2); @@ -3296,6 +3103,19 @@ Instruction syntax: } } + +/** + Execute the EBC ASHR instruction + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return Op1 >> Op2 (signed) + @return Instruction syntax: + @return ASHR[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteASHR ( @@ -3303,23 +3123,6 @@ ExecuteASHR ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC ASHR instruction - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - Op1 >> Op2 (signed) - -Instruction syntax: - ASHR[32|64] {@}R1, {@}R2 {Index16|Immed16} - ---*/ { if (*VmPtr->Ip & DATAMANIP_M_64) { return ARShiftU64 (Op1, (UINTN)Op2); @@ -3328,6 +3131,19 @@ Instruction syntax: } } + +/** + Execute the EBC EXTNDB instruction to sign-extend a byte value. + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return (INT64)(INT8)Op2 + @return Instruction syntax: + @return EXTNDB[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteEXTNDB ( @@ -3335,24 +3151,6 @@ ExecuteEXTNDB ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC EXTNDB instruction to sign-extend a byte value. - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - (INT64)(INT8)Op2 - -Instruction syntax: - EXTNDB[32|64] {@}R1, {@}R2 {Index16|Immed16} - - ---*/ { INT8 Data8; INT64 Data64; @@ -3366,6 +3164,19 @@ Instruction syntax: return (UINT64) Data64; } + +/** + Execute the EBC EXTNDW instruction to sign-extend a 16-bit value. + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return (INT64)(INT16)Op2 + @return Instruction syntax: + @return EXTNDW[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteEXTNDW ( @@ -3373,24 +3184,6 @@ ExecuteEXTNDW ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC EXTNDW instruction to sign-extend a 16-bit value. - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - (INT64)(INT16)Op2 - -Instruction syntax: - EXTNDW[32|64] {@}R1, {@}R2 {Index16|Immed16} - - ---*/ { INT16 Data16; INT64 Data64; @@ -3411,6 +3204,19 @@ Instruction syntax: // // Operation: Dest <- SignExtended((DWORD)Source)) // + +/** + Execute the EBC EXTNDD instruction to sign-extend a 32-bit value. + + @param VmPtr pointer to a VM context + @param Op1 Operand 1 from the instruction + @param Op2 Operand 2 from the instruction + + @return (INT64)(INT32)Op2 + @return Instruction syntax: + @return EXTNDD[32|64] {@}R1, {@}R2 {Index16|Immed16} + +**/ STATIC UINT64 ExecuteEXTNDD ( @@ -3418,24 +3224,6 @@ ExecuteEXTNDD ( IN UINT64 Op1, IN UINT64 Op2 ) -/*++ - -Routine Description: - Execute the EBC EXTNDD instruction to sign-extend a 32-bit value. - -Arguments: - VmPtr - pointer to a VM context - Op1 - Operand 1 from the instruction - Op2 - Operand 2 from the instruction - -Returns: - (INT64)(INT32)Op2 - -Instruction syntax: - EXTNDD[32|64] {@}R1, {@}R2 {Index16|Immed16} - - ---*/ { INT32 Data32; INT64 Data64; @@ -3475,32 +3263,28 @@ ExecuteUnsignedDataManip ( return ExecuteDataManip (VmPtr, FALSE); } -STATIC -EFI_STATUS -ExecuteDataManip ( - IN VM_CONTEXT *VmPtr, - IN BOOLEAN IsSignedOp - ) -/*++ -Routine Description: - Execute all the EBC data manipulation instructions. - Since the EBC data manipulation instructions all have the same basic form, +/** + Execute all the EBC data manipulation instructions. + Since the EBC data manipulation instructions all have the same basic form, they can share the code that does the fetch of operands and the write-back of the result. This function performs the fetch of the operands (even if both are not needed to be fetched, like NOT instruction), dispatches to the appropriate subfunction, then writes back the returned result. -Arguments: - VmPtr - pointer to VM context + @param VmPtr pointer to VM context -Returns: - Standard EBC status + @return Standard EBC status + @return Format: + @return INSTRUCITON[32|64] {@}R1, {@}R2 {Immed16|Index16} -Format: - INSTRUCITON[32|64] {@}R1, {@}R2 {Immed16|Index16} - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteDataManip ( + IN VM_CONTEXT *VmPtr, + IN BOOLEAN IsSignedOp + ) { UINT8 Opcode; INT16 Index16; @@ -3632,26 +3416,22 @@ Format: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteLOADSP ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC LOADSP instruction -Arguments: - VmPtr - pointer to a VM context + @param VmPtr pointer to a VM context -Returns: - Standard EFI_STATUS + @return Standard EFI_STATUS + @return Instruction syntax: + @return LOADSP SP1, R2 -Instruction syntax: - LOADSP SP1, R2 - ---*/ +**/ +STATIC +EFI_STATUS +ExecuteLOADSP ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Operands; @@ -3689,26 +3469,22 @@ Instruction syntax: return EFI_SUCCESS; } -STATIC -EFI_STATUS -ExecuteSTORESP ( - IN VM_CONTEXT *VmPtr - ) -/*++ -Routine Description: +/** Execute the EBC STORESP instruction -Arguments: - VmPtr - pointer to a VM context - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context -Instruction syntax: - STORESP Rx, FLAGS|IP + @return Standard EFI_STATUS + @return Instruction syntax: + @return STORESP Rx, FLAGS|IP ---*/ +**/ +STATIC +EFI_STATUS +ExecuteSTORESP ( + IN VM_CONTEXT *VmPtr + ) { UINT8 Operands; @@ -3753,37 +3529,32 @@ Instruction syntax: return EFI_SUCCESS; } + +/** + Decode a 16-bit index to determine the offset. Given an index value: + b15 - sign bit + b14:12 - number of bits in this index assigned to natural units (=a) + ba:11 - constant units = C + b0:a - natural units = N + Given this info, the offset can be computed by: + offset = sign_bit * (C + N * sizeof(UINTN)) + Max offset is achieved with index = 0x7FFF giving an offset of + 0x27B (32-bit machine) or 0x477 (64-bit machine). + Min offset is achieved with index = + + @param VmPtr pointer to VM context + @param CodeOffset offset from IP of the location of the 16-bit index to + decode + + @return The decoded offset. + +**/ STATIC INT16 VmReadIndex16 ( IN VM_CONTEXT *VmPtr, IN UINT32 CodeOffset ) -/*++ - -Routine Description: - Decode a 16-bit index to determine the offset. Given an index value: - - b15 - sign bit - b14:12 - number of bits in this index assigned to natural units (=a) - ba:11 - constant units = C - b0:a - natural units = N - - Given this info, the offset can be computed by: - offset = sign_bit * (C + N * sizeof(UINTN)) - - Max offset is achieved with index = 0x7FFF giving an offset of - 0x27B (32-bit machine) or 0x477 (64-bit machine). - Min offset is achieved with index = - -Arguments: - VmPtr - pointer to VM context - CodeOffset - offset from IP of the location of the 16-bit index to decode - -Returns: - The decoded offset. - ---*/ { UINT16 Index; INT16 Offset; @@ -3839,25 +3610,23 @@ Returns: return Offset; } + +/** + Decode a 32-bit index to determine the offset. + + @param VmPtr pointer to VM context + @param CodeOffset offset from IP of the location of the 32-bit index to + decode + + @return Converted index per EBC VM specification + +**/ STATIC INT32 VmReadIndex32 ( IN VM_CONTEXT *VmPtr, IN UINT32 CodeOffset ) -/*++ - -Routine Description: - Decode a 32-bit index to determine the offset. - -Arguments: - VmPtr - pointer to VM context - CodeOffset - offset from IP of the location of the 32-bit index to decode - -Returns: - Converted index per EBC VM specification - ---*/ { UINT32 Index; INT32 Offset; @@ -3905,25 +3674,23 @@ Returns: return Offset; } + +/** + Decode a 64-bit index to determine the offset. + + @param VmPtr pointer to VM context + @param CodeOffset offset from IP of the location of the 64-bit index to + decode + + @return Converted index per EBC VM specification + +**/ STATIC INT64 VmReadIndex64 ( IN VM_CONTEXT *VmPtr, IN UINT32 CodeOffset ) -/*++ - -Routine Description: - Decode a 64-bit index to determine the offset. - -Arguments: - VmPtr - pointer to VM context - CodeOffset - offset from IP of the location of the 64-bit index to decode - -Returns: - Converted index per EBC VM specification - ---*/ { UINT64 Index; INT64 Offset; @@ -3971,37 +3738,32 @@ Returns: return Offset; } -STATIC -EFI_STATUS -VmWriteMem8 ( - IN VM_CONTEXT *VmPtr, - IN UINTN Addr, - IN UINT8 Data - ) -/*++ -Routine Description: +/** The following VmWriteMem? routines are called by the EBC data movement instructions that write to memory. Since these writes may be to the stack, which looks like (high address on top) this, - [EBC entry point arguments] [VM stack] [EBC stack] - we need to detect all attempts to write to the EBC entry point argument - stack area and adjust the address (which will initially point into the + stack area and adjust the address (which will initially point into the VM stack) to point into the EBC entry point arguments. -Arguments: - VmPtr - pointer to a VM context - Addr - adddress to write to - Data - value to write to Addr - -Returns: - Standard EFI_STATUS + @param VmPtr pointer to a VM context + @param Addr adddress to write to + @param Data value to write to Addr + + @return Standard EFI_STATUS ---*/ +**/ +STATIC +EFI_STATUS +VmWriteMem8 ( + IN VM_CONTEXT *VmPtr, + IN UINTN Addr, + IN UINT8 Data + ) { // // Convert the address if it's in the stack gap @@ -4166,29 +3928,25 @@ VmWriteMemN ( return Status; } -STATIC -INT8 -VmReadImmed8 ( - IN VM_CONTEXT *VmPtr, - IN UINT32 Offset - ) -/*++ -Routine Description: - +/** The following VmReadImmed routines are called by the EBC execute functions to read EBC immediate values from the code stream. - Since we can't assume alignment, each tries to read in the biggest + Since we can't assume alignment, each tries to read in the biggest chunks size available, but will revert to smaller reads if necessary. -Arguments: - VmPtr - pointer to a VM context - Offset - offset from IP of the code bytes to read. + @param VmPtr pointer to a VM context + @param Offset offset from IP of the code bytes to read. -Returns: - Signed data of the requested size from the specified address. + @return Signed data of the requested size from the specified address. ---*/ +**/ +STATIC +INT8 +VmReadImmed8 ( + IN VM_CONTEXT *VmPtr, + IN UINT32 Offset + ) { // // Simply return the data in flat memory space @@ -4276,26 +4034,23 @@ VmReadImmed64 ( return Data64; } + +/** + The following VmReadCode() routines provide the ability to read raw + unsigned data from the code stream. + + @param VmPtr pointer to VM context + @param Offset offset from current IP to the raw data to read. + + @return The raw unsigned 16-bit value from the code stream. + +**/ STATIC UINT16 VmReadCode16 ( IN VM_CONTEXT *VmPtr, IN UINT32 Offset ) -/*++ - -Routine Description: - The following VmReadCode() routines provide the ability to read raw - unsigned data from the code stream. - -Arguments: - VmPtr - pointer to VM context - Offset - offset from current IP to the raw data to read. - -Returns: - The raw unsigned 16-bit value from the code stream. - ---*/ { // // Read direct if aligned @@ -4466,64 +4221,53 @@ VmReadMem64 ( return Data; } -STATIC -UINTN -ConvertStackAddr ( - IN VM_CONTEXT *VmPtr, - IN UINTN Addr - ) -/*++ - -Routine Description: +/** Given an address that EBC is going to read from or write to, return an appropriate address that accounts for a gap in the stack. - The stack for this application looks like this (high addr on top) [EBC entry point arguments] [VM stack] [EBC stack] - The EBC assumes that its arguments are at the top of its stack, which is where the VM stack is really. Therefore if the EBC does memory accesses into the VM stack area, then we need to convert the address to point to the EBC entry point arguments area. Do this here. -Arguments: + @param VmPtr pointer to VM context + @param Addr address of interest - VmPtr - pointer to VM context - Addr - address of interest + @return The unchanged address if it's not in the VM stack region. Otherwise, + @return adjust for the stack gap and return the modified address. -Returns: - - The unchanged address if it's not in the VM stack region. Otherwise, - adjust for the stack gap and return the modified address. - ---*/ -{ +**/ +STATIC +UINTN +ConvertStackAddr ( + IN VM_CONTEXT *VmPtr, + IN UINTN Addr + ) +{ ASSERT(((Addr < VmPtr->LowStackTop) || (Addr > VmPtr->HighStackBottom))); return Addr; } + +/** + Read a natural value from memory. May or may not be aligned. + + @param VmPtr current VM context + @param Addr the address to read from + + @return The natural value at address Addr. + +**/ STATIC UINTN VmReadMemN ( IN VM_CONTEXT *VmPtr, IN UINTN Addr ) -/*++ - -Routine Description: - Read a natural value from memory. May or may not be aligned. - -Arguments: - VmPtr - current VM context - Addr - the address to read from - -Returns: - The natural value at address Addr. - ---*/ { UINTN Data; volatile UINT32 Size; diff --git a/MdeModulePkg/Universal/EbcDxe/EbcExecute.h b/MdeModulePkg/Universal/EbcDxe/EbcExecute.h index b1926ee975..91aada0d55 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcExecute.h +++ b/MdeModulePkg/Universal/EbcDxe/EbcExecute.h @@ -1,25 +1,18 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - EbcExecute.h - -Abstract: - +/** @file Header file for Virtual Machine support. Contains EBC defines that can - be of use to a disassembler for the most part. Also provides function + be of use to a disassembler for the most part. Also provides function prototypes for VM functions. ---*/ +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #ifndef _EBC_EXECUTE_H_ #define _EBC_EXECUTE_H_ diff --git a/MdeModulePkg/Universal/EbcDxe/EbcInt.c b/MdeModulePkg/Universal/EbcDxe/EbcInt.c index 2b647d9bae..37a2b7f6b0 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcInt.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcInt.c @@ -1,4 +1,7 @@ -/*++ +/** @file + Top level module for the EBC virtual machine implementation. + Provides auxilliary support routines for the VM. That is, routines + that are not particularly related to VM execution of EBC instructions. Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials @@ -9,17 +12,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - EbcInt.c - -Abstract: - - Top level module for the EBC virtual machine implementation. - Provides auxilliary support routines for the VM. That is, routines - that are not particularly related to VM execution of EBC instructions. - ---*/ +**/ #include "EbcInt.h" #include "EbcExecute.h" @@ -188,28 +181,23 @@ static UINTN mStackNum = 0; static EFI_EVENT mEbcPeriodicEvent; VM_CONTEXT *mVmPtr = NULL; -EFI_STATUS -EFIAPI -InitializeEbcDriver ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: +/** Initializes the VM EFI interface. Allocates memory for the VM interface and registers the VM protocol. -Arguments: - - ImageHandle - EFI image handle. - SystemTable - Pointer to the EFI system table. + @param ImageHandle EFI image handle. + @param SystemTable Pointer to the EFI system table. -Returns: - Standard EFI status code. + @return Standard EFI status code. ---*/ +**/ +EFI_STATUS +EFIAPI +InitializeEbcDriver ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { EFI_EBC_PROTOCOL *EbcProtocol; EFI_EBC_PROTOCOL *OldEbcProtocol; @@ -384,6 +372,24 @@ ErrorExit: return Status; } + +/** + This is the top-level routine plugged into the EBC protocol. Since thunks + are very processor-specific, from here we dispatch directly to the very + processor-specific routine EbcCreateThunks(). + + @param This protocol instance pointer + @param ImageHandle handle to the image. The EBC interpreter may use + this to keep track of any resource allocations + performed in loading and executing the image. + @param EbcEntryPoint the entry point for the image (as defined in the + file header) + @param Thunk pointer to thunk pointer where the address of the + created thunk is returned. + + @return EFI_STATUS + +**/ STATIC EFI_STATUS EFIAPI @@ -393,29 +399,6 @@ EbcCreateThunk ( IN VOID *EbcEntryPoint, OUT VOID **Thunk ) -/*++ - -Routine Description: - - This is the top-level routine plugged into the EBC protocol. Since thunks - are very processor-specific, from here we dispatch directly to the very - processor-specific routine EbcCreateThunks(). - -Arguments: - - This - protocol instance pointer - ImageHandle - handle to the image. The EBC interpreter may use this to keep - track of any resource allocations performed in loading and - executing the image. - EbcEntryPoint - the entry point for the image (as defined in the file header) - Thunk - pointer to thunk pointer where the address of the created - thunk is returned. - -Returns: - - EFI_STATUS - ---*/ { EFI_STATUS Status; @@ -428,6 +411,18 @@ Returns: return Status; } + +/** + This EBC debugger protocol service is called by the debug agent + + @param This pointer to the caller's debug support protocol + interface + @param MaxProcessorIndex pointer to a caller allocated UINTN in which the + maximum processor index is returned. + + @return Standard EFI_STATUS + +**/ STATIC EFI_STATUS EFIAPI @@ -435,28 +430,23 @@ EbcDebugGetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex ) -/*++ - -Routine Description: - - This EBC debugger protocol service is called by the debug agent - -Arguments: - - This - pointer to the caller's debug support protocol interface - MaxProcessorIndex - pointer to a caller allocated UINTN in which the maximum - processor index is returned. - -Returns: - - Standard EFI_STATUS - ---*/ { *MaxProcessorIndex = 0; return EFI_SUCCESS; } + +/** + This protocol service is called by the debug agent to register a function + for us to call on a periodic basis. + + @param This pointer to the caller's debug support protocol + interface + @param PeriodicCallback pointer to the function to call periodically + + @return Always EFI_SUCCESS + +**/ STATIC EFI_STATUS EFIAPI @@ -465,24 +455,6 @@ EbcDebugRegisterPeriodicCallback ( IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback ) -/*++ - -Routine Description: - - This protocol service is called by the debug agent to register a function - for us to call on a periodic basis. - - -Arguments: - - This - pointer to the caller's debug support protocol interface - PeriodicCallback - pointer to the function to call periodically - -Returns: - - Always EFI_SUCCESS - ---*/ { if ((mDebugPeriodicCallback == NULL) && (PeriodicCallback == NULL)) { return EFI_INVALID_PARAMETER; @@ -495,6 +467,18 @@ Returns: return EFI_SUCCESS; } + +/** + This protocol service is called by the debug agent to register a function + for us to call when we detect an exception. + + @param This pointer to the caller's debug support protocol + interface + @param ExceptionCallback pointer to the function to the exception + + @return Always EFI_SUCCESS + +**/ STATIC EFI_STATUS EFIAPI @@ -504,24 +488,6 @@ EbcDebugRegisterExceptionCallback ( IN EFI_EXCEPTION_CALLBACK ExceptionCallback, IN EFI_EXCEPTION_TYPE ExceptionType ) -/*++ - -Routine Description: - - This protocol service is called by the debug agent to register a function - for us to call when we detect an exception. - - -Arguments: - - This - pointer to the caller's debug support protocol interface - ExceptionCallback - pointer to the function to the exception - -Returns: - - Always EFI_SUCCESS - ---*/ { if ((ExceptionType < 0) || (ExceptionType > MAX_EBC_EXCEPTION)) { return EFI_INVALID_PARAMETER; @@ -536,6 +502,15 @@ Returns: return EFI_SUCCESS; } + +/** + This EBC debugger protocol service is called by the debug agent. Required + for DebugSupport compliance but is only stubbed out for EBC. + + + @return EFI_SUCCESS + +**/ STATIC EFI_STATUS EFIAPI @@ -545,45 +520,26 @@ EbcDebugInvalidateInstructionCache ( IN VOID *Start, IN UINT64 Length ) -/*++ - -Routine Description: +{ + return EFI_SUCCESS; +} - This EBC debugger protocol service is called by the debug agent. Required - for DebugSupport compliance but is only stubbed out for EBC. -Arguments: +/** + The VM interpreter calls this function when an exception is detected. -Returns: + @param VmPtr pointer to a VM context for passing info to the + EFI debugger. - EFI_SUCCESS - ---*/ -{ - return EFI_SUCCESS; -} + @return EFI_SUCCESS if it returns at all +**/ EFI_STATUS EbcDebugSignalException ( IN EFI_EXCEPTION_TYPE ExceptionType, IN EXCEPTION_FLAGS ExceptionFlags, IN VM_CONTEXT *VmPtr ) -/*++ - -Routine Description: - - The VM interpreter calls this function when an exception is detected. - -Arguments: - - VmPtr - pointer to a VM context for passing info to the EFI debugger. - -Returns: - - EFI_SUCCESS if it returns at all - ---*/ { EFI_SYSTEM_CONTEXT_EBC EbcContext; EFI_SYSTEM_CONTEXT SystemContext; @@ -645,26 +601,20 @@ Returns: return EFI_SUCCESS; } -STATIC -EFI_STATUS -InitializeEbcCallback ( - IN EFI_DEBUG_SUPPORT_PROTOCOL *This - ) -/*++ - -Routine Description: +/** To install default Callback function for the VM interpreter. -Arguments: + @param This pointer to the instance of DebugSupport protocol - This - pointer to the instance of DebugSupport protocol + @return None -Returns: - - None - ---*/ +**/ +STATIC +EFI_STATUS +InitializeEbcCallback ( + IN EFI_DEBUG_SUPPORT_PROTOCOL *This + ) { INTN Index; EFI_STATUS Status; @@ -707,30 +657,24 @@ Returns: return EFI_SUCCESS; } -STATIC -VOID -CommonEbcExceptionHandler ( - IN EFI_EXCEPTION_TYPE InterruptType, - IN EFI_SYSTEM_CONTEXT SystemContext - ) -/*++ - -Routine Description: +/** The default Exception Callback for the VM interpreter. In this function, we report status code, and print debug information about EBC_CONTEXT, then dead loop. -Arguments: - - InterruptType - Interrupt type. - SystemContext - EBC system context. - -Returns: + @param InterruptType Interrupt type. + @param SystemContext EBC system context. - None + @return None ---*/ +**/ +STATIC +VOID +CommonEbcExceptionHandler ( + IN EFI_EXCEPTION_TYPE InterruptType, + IN EFI_SYSTEM_CONTEXT SystemContext + ) { // // We deadloop here to make it easy to debug this issue. @@ -740,6 +684,17 @@ Returns: return ; } + +/** + The periodic callback function for EBC VM interpreter, which is used + to support the EFI debug support protocol. + + @param Event The Periodic Callback Event. + @param Context It should be the address of VM_CONTEXT pointer. + + @return None. + +**/ STATIC VOID EFIAPI @@ -747,23 +702,6 @@ EbcPeriodicNotifyFunction ( IN EFI_EVENT Event, IN VOID *Context ) -/*++ - -Routine Description: - - The periodic callback function for EBC VM interpreter, which is used - to support the EFI debug support protocol. - -Arguments: - - Event - The Periodic Callback Event. - Context - It should be the address of VM_CONTEXT pointer. - -Returns: - - None. - ---*/ { VM_CONTEXT *VmPtr; @@ -776,27 +714,22 @@ Returns: return ; } -STATIC -EFI_STATUS -EbcDebugPeriodic ( - IN VM_CONTEXT *VmPtr - ) -/*++ - -Routine Description: +/** The VM interpreter calls this function on a periodic basis to support the EFI debug support protocol. -Arguments: - - VmPtr - pointer to a VM context for passing info to the debugger. + @param VmPtr pointer to a VM context for passing info to the + debugger. -Returns: + @return Standard EFI status. - Standard EFI status. - ---*/ +**/ +STATIC +EFI_STATUS +EbcDebugPeriodic ( + IN VM_CONTEXT *VmPtr + ) { EFI_SYSTEM_CONTEXT_EBC EbcContext; EFI_SYSTEM_CONTEXT SystemContext; @@ -842,33 +775,27 @@ Returns: return EFI_SUCCESS; } -STATIC -EFI_STATUS -EFIAPI -EbcUnloadImage ( - IN EFI_EBC_PROTOCOL *This, - IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: +/** This routine is called by the core when an image is being unloaded from memory. Basically we now have the opportunity to do any necessary cleanup. Typically this will include freeing any memory allocated for thunk-creation. -Arguments: - - This - protocol instance pointer - ImageHandle - handle to the image being unloaded. - -Returns: + @param This protocol instance pointer + @param ImageHandle handle to the image being unloaded. - EFI_INVALID_PARAMETER - the ImageHandle passed in was not found in - the internal list of EBC image handles. - EFI_STATUS - completed successfully + @retval EFI_INVALID_PARAMETER the ImageHandle passed in was not found in the + internal list of EBC image handles. + @retval EFI_STATUS completed successfully ---*/ +**/ +STATIC +EFI_STATUS +EFIAPI +EbcUnloadImage ( + IN EFI_EBC_PROTOCOL *This, + IN EFI_HANDLE ImageHandle + ) { EBC_THUNK_LIST *ThunkList; EBC_THUNK_LIST *NextThunkList; @@ -922,32 +849,26 @@ Returns: return EFI_SUCCESS; } -EFI_STATUS -EbcAddImageThunk ( - IN EFI_HANDLE ImageHandle, - IN VOID *ThunkBuffer, - IN UINT32 ThunkSize - ) -/*++ - -Routine Description: +/** Add a thunk to our list of thunks for a given image handle. Also flush the instruction cache since we've written thunk code to memory that will be executed eventually. -Arguments: - - ImageHandle - the image handle to which the thunk is tied - ThunkBuffer - the buffer we've created/allocated - ThunkSize - the size of the thunk memory allocated - -Returns: + @param ImageHandle the image handle to which the thunk is tied + @param ThunkBuffer the buffer we've created/allocated + @param ThunkSize the size of the thunk memory allocated - EFI_OUT_OF_RESOURCES - memory allocation failed - EFI_SUCCESS - successful completion + @retval EFI_OUT_OF_RESOURCES memory allocation failed + @retval EFI_SUCCESS successful completion ---*/ +**/ +EFI_STATUS +EbcAddImageThunk ( + IN EFI_HANDLE ImageHandle, + IN VOID *ThunkBuffer, + IN UINT32 ThunkSize + ) { EBC_THUNK_LIST *ThunkList; EBC_IMAGE_LIST *ImageList; @@ -1113,27 +1034,21 @@ FreeEBCStack( } return EFI_SUCCESS; } -STATIC -EFI_STATUS -InitEbcVmTestProtocol ( - IN EFI_HANDLE *IHandle - ) -/*++ - -Routine Description: +/** Produce an EBC VM test protocol that can be used for regression tests. -Arguments: - - IHandle - handle on which to install the protocol. + @param IHandle handle on which to install the protocol. -Returns: + @retval EFI_OUT_OF_RESOURCES memory allocation failed + @retval EFI_SUCCESS successful completion - EFI_OUT_OF_RESOURCES - memory allocation failed - EFI_SUCCESS - successful completion - ---*/ +**/ +STATIC +EFI_STATUS +InitEbcVmTestProtocol ( + IN EFI_HANDLE *IHandle + ) { EFI_HANDLE Handle; EFI_STATUS Status; diff --git a/MdeModulePkg/Universal/EbcDxe/EbcInt.h b/MdeModulePkg/Universal/EbcDxe/EbcInt.h index a62b121531..c9f2b825f1 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcInt.h +++ b/MdeModulePkg/Universal/EbcDxe/EbcInt.h @@ -1,24 +1,17 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +/** @file + Main routines for the EBC interpreter. Includes the initialization and + main interpreter routines. -Module Name: +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php - EbcInt.h - -Abstract: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - Main routines for the EBC interpreter. Includes the initialization and - main interpreter routines. - ---*/ +**/ #ifndef _EBC_INT_H_ #define _EBC_INT_H_ diff --git a/MdeModulePkg/Universal/EbcDxe/Ia32/EbcSupport.c b/MdeModulePkg/Universal/EbcDxe/Ia32/EbcSupport.c index a534e00780..1d008ac782 100644 --- a/MdeModulePkg/Universal/EbcDxe/Ia32/EbcSupport.c +++ b/MdeModulePkg/Universal/EbcDxe/Ia32/EbcSupport.c @@ -1,24 +1,17 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - EbcSupport.c - -Abstract: - +/** @file This module contains EBC support routines that are customized based on the target processor. ---*/ +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #include "EbcInt.h" #include "EbcExecute.h" @@ -33,38 +26,33 @@ Abstract: #define EBC_THUNK_SIZE 32 #define STACK_REMAIN_SIZE (1024 * 4) -VOID -EbcLLCALLEX ( - IN VM_CONTEXT *VmPtr, - IN UINTN FuncAddr, - IN UINTN NewStackPointer, - IN VOID *FramePtr, - IN UINT8 Size - ) -/*++ -Routine Description: - This function is called to execute an EBC CALLEX instruction. +/** + This function is called to execute an EBC CALLEX instruction. The function check the callee's content to see whether it is common native code or a thunk to another piece of EBC code. If the callee is common native code, use EbcLLCAllEXASM to manipulate, otherwise, set the VM->IP to target EBC code directly to avoid another VM be startup which cost time and stack space. - -Arguments: - VmPtr - Pointer to a VM context. - FuncAddr - Callee's address - NewStackPointer - New stack pointer after the call - FramePtr - New frame pointer after the call - Size - The size of call instruction + @parm VmPtr Pointer to a VM context. + @parm FuncAddr Callee's address + @parm NewStackPointer New stack pointer after the call + @parm FramePtr New frame pointer after the call + @parm Size The size of call instruction -Returns: + @return None. - None. - ---*/ +**/ +VOID +EbcLLCALLEX ( + IN VM_CONTEXT *VmPtr, + IN UINTN FuncAddr, + IN UINTN NewStackPointer, + IN VOID *FramePtr, + IN UINT8 Size + ) { UINTN IsThunk; UINTN TargetEbcAddr; @@ -134,7 +122,7 @@ Action: // The callee is not a thunk to EBC, call native code. // EbcLLCALLEXNative (FuncAddr, NewStackPointer, FramePtr); - + // // Get return value and advance the IP. // @@ -143,6 +131,19 @@ Action: } } + +/** + Begin executing an EBC image. The address of the entry point is passed + in via a processor register, so we'll need to make a call to get the + value. + + None. Since we're called from a fixed up thunk (which we want to keep + small), our only so-called argument is the EBC entry point passed in + to us in a processor register. + + @return The value returned by the EBC application we're going to run. + +**/ STATIC UINT64 EbcInterpret ( @@ -163,25 +164,6 @@ EbcInterpret ( IN OUT UINTN Arg15, IN OUT UINTN Arg16 ) -/*++ - -Routine Description: - - Begin executing an EBC image. The address of the entry point is passed - in via a processor register, so we'll need to make a call to get the - value. - -Arguments: - - None. Since we're called from a fixed up thunk (which we want to keep - small), our only so-called argument is the EBC entry point passed in - to us in a processor register. - -Returns: - - The value returned by the EBC application we're going to run. - ---*/ { // // Create a new VM context on the stack @@ -298,30 +280,24 @@ Returns: return (UINT64) VmContext.R[7]; } -STATIC -UINT64 -ExecuteEbcImageEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: +/** Begin executing an EBC image. The address of the entry point is passed in via a processor register, so we'll need to make a call to get the value. - -Arguments: - ImageHandle - image handle for the EBC application we're executing - SystemTable - standard system table passed into an driver's entry point + @param ImageHandle image handle for the EBC application we're executing + @param SystemTable standard system table passed into an driver's entry point -Returns: + @return The value returned by the EBC application we're going to run. - The value returned by the EBC application we're going to run. - ---*/ +**/ +STATIC +UINT64 +ExecuteEbcImageEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { // // Create a new VM context on the stack @@ -373,7 +349,7 @@ Returns: VmContext.R[0] = (UINT64)(UINTN) ((UINT8*)VmContext.StackPool + STACK_POOL_SIZE); VmContext.HighStackBottom = (UINTN)VmContext.R[0]; VmContext.R[0] -= sizeof (UINTN); - + // // Put a magic value in the stack gap, then adjust down again // @@ -390,7 +366,7 @@ Returns: VmContext.R[0] -= sizeof (UINTN); *(UINTN *) (UINTN) (VmContext.R[0]) = (UINTN) ImageHandle; - VmContext.R[0] -= 16; + VmContext.R[0] -= 16; VmContext.StackRetAddr = (UINT64) VmContext.R[0]; // // VM pushes 16-bytes for return address. Simulate that here. @@ -407,6 +383,17 @@ Returns: return (UINT64) VmContext.R[7]; } + +/** + Create an IA32 thunk for the given EBC entry point. + + @param ImageHandle Handle of image for which this thunk is being created + @param EbcEntryPoint Address of the EBC code that the thunk is to call + @param Thunk Returned thunk we create here + + @return Standard EFI status. + +**/ EFI_STATUS EbcCreateThunks ( IN EFI_HANDLE ImageHandle, @@ -414,23 +401,6 @@ EbcCreateThunks ( OUT VOID **Thunk, IN UINT32 Flags ) -/*++ - -Routine Description: - - Create an IA32 thunk for the given EBC entry point. - -Arguments: - - ImageHandle - Handle of image for which this thunk is being created - EbcEntryPoint - Address of the EBC code that the thunk is to call - Thunk - Returned thunk we create here - -Returns: - - Standard EFI status. - ---*/ { UINT8 *Ptr; UINT8 *ThunkBase; diff --git a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c index 3647a12fae..b2cb6f6be0 100644 --- a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c +++ b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c @@ -1,24 +1,17 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - EbcSupport.c - -Abstract: - +/** @file This module contains EBC support routines that are customized based on the target processor. ---*/ +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #include "EbcInt.h" #include "EbcExecute.h" @@ -141,7 +134,7 @@ EbcInterpret ( // Now adjust the EBC stack pointer down to leave a gap for interpreter // execution. Then stuff a magic value there. // - + Status = GetEBCStack((EFI_HANDLE)(UINTN)-1, &VmContext.StackPool, &StackIndex); if (EFI_ERROR(Status)) { return Status; @@ -151,7 +144,7 @@ EbcInterpret ( VmContext.HighStackBottom = (UINTN) VmContext.R[0]; VmContext.R[0] -= sizeof (UINTN); - + PushU64 (&VmContext, (UINT64) VM_STACK_KEY_VALUE); VmContext.StackMagicPtr = (UINTN *) VmContext.R[0]; VmContext.LowStackTop = (UINTN) VmContext.R[0]; @@ -194,32 +187,27 @@ EbcInterpret ( return (UINT64) VmContext.R[7]; } -STATIC -UINT64 -ExecuteEbcImageEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: +/** IPF implementation. - Begin executing an EBC image. The address of the entry point is passed in via a processor register, so we'll need to make a call to get the value. - -Arguments: - ImageHandle - image handle for the EBC application we're executing - SystemTable - standard system table passed into an driver's entry point + @param ImageHandle image handle for the EBC application we're + executing + @param SystemTable standard system table passed into an driver's + entry point -Returns: + @return The value returned by the EBC application we're going to run. - The value returned by the EBC application we're going to run. - ---*/ +**/ +STATIC +UINT64 +ExecuteEbcImageEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { // // Create a new VM context on the stack @@ -256,7 +244,7 @@ Returns: // Get the stack pointer. This is the bottom of the upper stack. // Addr = EbcLLGetStackPointer (); - + Status = GetEBCStack(ImageHandle, &VmContext.StackPool, &StackIndex); if (EFI_ERROR(Status)) { return Status; @@ -266,7 +254,7 @@ Returns: VmContext.HighStackBottom = (UINTN) VmContext.R[0]; VmContext.R[0] -= sizeof (UINTN); - + // // Allocate stack space for the interpreter. Then put a magic value // at the bottom so we can detect stack corruption. @@ -320,6 +308,19 @@ Returns: return (UINT64) VmContext.R[7]; } + +/** + Create thunks for an EBC image entry point, or an EBC protocol service. + + @param ImageHandle Image handle for the EBC image. If not null, then + we're creating a thunk for an image entry point. + @param EbcEntryPoint Address of the EBC code that the thunk is to call + @param Thunk Returned thunk we create here + @param Flags Flags indicating options for creating the thunk + + @return Standard EFI status. + +**/ EFI_STATUS EbcCreateThunks ( IN EFI_HANDLE ImageHandle, @@ -327,25 +328,6 @@ EbcCreateThunks ( OUT VOID **Thunk, IN UINT32 Flags ) -/*++ - -Routine Description: - - Create thunks for an EBC image entry point, or an EBC protocol service. - -Arguments: - - ImageHandle - Image handle for the EBC image. If not null, then we're - creating a thunk for an image entry point. - EbcEntryPoint - Address of the EBC code that the thunk is to call - Thunk - Returned thunk we create here - Flags - Flags indicating options for creating the thunk - -Returns: - - Standard EFI status. - ---*/ { UINT8 *Ptr; UINT8 *ThunkBase; @@ -680,6 +662,21 @@ Returns: return EFI_SUCCESS; } + +/** + Given raw bytes of Itanium based code, format them into a bundle and + write them out. + + @param MemPtr pointer to memory location to write the bundles to + @param Template 5-bit template + @param Slot0-2 instruction slot data for the bundle + + @retval EFI_INVALID_PARAMETER Pointer is not aligned + @retval No more than 5 bits in template + @retval More than 41 bits used in code + @retval EFI_SUCCESS All data is written. + +**/ STATIC EFI_STATUS WriteBundle ( @@ -689,27 +686,6 @@ WriteBundle ( IN UINT64 Slot1, IN UINT64 Slot2 ) -/*++ - -Routine Description: - - Given raw bytes of Itanium based code, format them into a bundle and - write them out. - -Arguments: - - MemPtr - pointer to memory location to write the bundles to - Template - 5-bit template - Slot0-2 - instruction slot data for the bundle - -Returns: - - EFI_INVALID_PARAMETER - Pointer is not aligned - - No more than 5 bits in template - - More than 41 bits used in code - EFI_SUCCESS - All data is written. - ---*/ { UINT8 *BPtr; UINT32 Index; @@ -760,38 +736,32 @@ Returns: return EFI_SUCCESS; } -VOID -EbcLLCALLEX ( - IN VM_CONTEXT *VmPtr, - IN UINTN FuncAddr, - IN UINTN NewStackPointer, - IN VOID *FramePtr, - IN UINT8 Size - ) -/*++ - -Routine Description: - This function is called to execute an EBC CALLEX instruction. +/** + This function is called to execute an EBC CALLEX instruction. The function check the callee's content to see whether it is common native code or a thunk to another piece of EBC code. If the callee is common native code, use EbcLLCAllEXASM to manipulate, otherwise, set the VM->IP to target EBC code directly to avoid another VM be startup which cost time and stack space. - -Arguments: - VmPtr - Pointer to a VM context. - FuncAddr - Callee's address - NewStackPointer - New stack pointer after the call - FramePtr - New frame pointer after the call - Size - The size of call instruction + @param VmPtr Pointer to a VM context. + @param FuncAddr Callee's address + @param NewStackPointer New stack pointer after the call + @param FramePtr New frame pointer after the call + @param Size The size of call instruction -Returns: + @return None. - None. - ---*/ +**/ +VOID +EbcLLCALLEX ( + IN VM_CONTEXT *VmPtr, + IN UINTN FuncAddr, + IN UINTN NewStackPointer, + IN VOID *FramePtr, + IN UINT8 Size + ) { UINTN IsThunk; UINTN TargetEbcAddr; diff --git a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h index f6c929ba3e..7b554f3e65 100644 --- a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h +++ b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h @@ -1,4 +1,5 @@ -/*++ +/** @file + Definition of EBC Support function. Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials @@ -9,17 +10,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - EbcSupport.h - -Abstract: - - Definition of EBC Support function - -Revision History - ---*/ +**/ #ifndef _IPF_EBC_SUPPORT_H_ #define _IPF_EBC_SUPPORT_H_ diff --git a/MdeModulePkg/Universal/EbcDxe/x64/EbcSupport.c b/MdeModulePkg/Universal/EbcDxe/x64/EbcSupport.c index bec82d67c5..90db1669d9 100644 --- a/MdeModulePkg/Universal/EbcDxe/x64/EbcSupport.c +++ b/MdeModulePkg/Universal/EbcDxe/x64/EbcSupport.c @@ -1,24 +1,17 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - EbcSupport.c - -Abstract: - +/** @file This module contains EBC support routines that are customized based on the target x64 processor. ---*/ +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ #include "EbcInt.h" #include "EbcExecute.h" @@ -45,7 +38,7 @@ PushU64 ( Routine Description: Push a 64 bit unsigned value to the VM stack. - + Arguments: VmPtr - The pointer to current VM context. @@ -54,7 +47,7 @@ Arguments: Returns: VOID - + --*/ { // @@ -66,6 +59,19 @@ Returns: return; } + +/** + Begin executing an EBC image. The address of the entry point is passed + in via a processor register, so we'll need to make a call to get the + value. + + This is a thunk function. Microsoft x64 compiler only provide fast_call + calling convention, so the first four arguments are passed by rcx, rdx, + r8, and r9, while other arguments are passed in stack. + + @return The value returned by the EBC application we're going to run. + +**/ STATIC UINT64 EbcInterpret ( @@ -86,25 +92,6 @@ EbcInterpret ( UINTN Arg15, UINTN Arg16 ) -/*++ - -Routine Description: - - Begin executing an EBC image. The address of the entry point is passed - in via a processor register, so we'll need to make a call to get the - value. - -Arguments: - - This is a thunk function. Microsoft x64 compiler only provide fast_call - calling convention, so the first four arguments are passed by rcx, rdx, - r8, and r9, while other arguments are passed in stack. - -Returns: - - The value returned by the EBC application we're going to run. - ---*/ { // // Create a new VM context on the stack @@ -140,7 +127,7 @@ Returns: // // Adjust the VM's stack pointer down. // - + Status = GetEBCStack((EFI_HANDLE)(UINTN)-1, &VmContext.StackPool, &StackIndex); if (EFI_ERROR(Status)) { return Status; @@ -225,30 +212,25 @@ Returns: return (UINT64) VmContext.R[7]; } -STATIC -UINT64 -ExecuteEbcImageEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: +/** Begin executing an EBC image. The address of the entry point is passed in via a processor register, so we'll need to make a call to get the value. - -Arguments: - ImageHandle - image handle for the EBC application we're executing - SystemTable - standard system table passed into an driver's entry point + @param ImageHandle image handle for the EBC application we're executing + @param SystemTable standard system table passed into an driver's entry + point -Returns: + @return The value returned by the EBC application we're going to run. - The value returned by the EBC application we're going to run. - ---*/ +**/ +STATIC +UINT64 +ExecuteEbcImageEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { // // Create a new VM context on the stack @@ -344,6 +326,17 @@ Returns: return (UINT64) VmContext.R[7]; } + +/** + Create an IA32 thunk for the given EBC entry point. + + @param ImageHandle Handle of image for which this thunk is being created + @param EbcEntryPoint Address of the EBC code that the thunk is to call + @param Thunk Returned thunk we create here + + @return Standard EFI status. + +**/ EFI_STATUS EbcCreateThunks ( IN EFI_HANDLE ImageHandle, @@ -351,23 +344,6 @@ EbcCreateThunks ( OUT VOID **Thunk, IN UINT32 Flags ) -/*++ - -Routine Description: - - Create an IA32 thunk for the given EBC entry point. - -Arguments: - - ImageHandle - Handle of image for which this thunk is being created - EbcEntryPoint - Address of the EBC code that the thunk is to call - Thunk - Returned thunk we create here - -Returns: - - Standard EFI status. - ---*/ { UINT8 *Ptr; UINT8 *ThunkBase; @@ -496,38 +472,32 @@ Returns: return EFI_SUCCESS; } -VOID -EbcLLCALLEX ( - IN VM_CONTEXT *VmPtr, - IN UINTN FuncAddr, - IN UINTN NewStackPointer, - IN VOID *FramePtr, - IN UINT8 Size - ) -/*++ - -Routine Description: - This function is called to execute an EBC CALLEX instruction. +/** + This function is called to execute an EBC CALLEX instruction. The function check the callee's content to see whether it is common native code or a thunk to another piece of EBC code. If the callee is common native code, use EbcLLCAllEXASM to manipulate, otherwise, set the VM->IP to target EBC code directly to avoid another VM be startup which cost time and stack space. - -Arguments: - VmPtr - Pointer to a VM context. - FuncAddr - Callee's address - NewStackPointer - New stack pointer after the call - FramePtr - New frame pointer after the call - Size - The size of call instruction + @param VmPtr Pointer to a VM context. + @param FuncAddr Callee's address + @param NewStackPointer New stack pointer after the call + @param FramePtr New frame pointer after the call + @param Size The size of call instruction -Returns: + @return None. - None. - ---*/ +**/ +VOID +EbcLLCALLEX ( + IN VM_CONTEXT *VmPtr, + IN UINTN FuncAddr, + IN UINTN NewStackPointer, + IN VOID *FramePtr, + IN UINT8 Size + ) { UINTN IsThunk; UINTN TargetEbcAddr; diff --git a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.c b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.c index 31efab323a..e97ab9690f 100644 --- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.c +++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.c @@ -1,6 +1,7 @@ -/*++ +/** @file + Produced the Monotonic Counter Services as defined in the DXE CIS. -Copyright (c) 2006 - 2007, Intel Corporation +Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,17 +10,8 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - MonotonicCounter.c - -Abstract: - - Produced the Monotonic Counter Services as defined in the DXE CIS - -Revision History: +**/ ---*/ #include "MonotonicCounter.h" diff --git a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.h b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.h index 42af27249f..c177f16c76 100644 --- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.h +++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounter.h @@ -1,23 +1,16 @@ -/*++ +/** @file + Header file for MonotonicCounter driver. -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php -Module Name: +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - MonotonicCounter.h - -Abstract: - - Produces the Monotonic Counter services as defined in the DXE CIS - ---*/ +**/ #ifndef _MONOTONIC_COUNTER_DRIVER_H_ #define _MONOTONIC_COUNTER_DRIVER_H_ diff --git a/MdeModulePkg/Universal/Network/SnpDxe/Callback.c b/MdeModulePkg/Universal/Network/SnpDxe/Callback.c index c246874917..fbc2d6687d 100644 --- a/MdeModulePkg/Universal/Network/SnpDxe/Callback.c +++ b/MdeModulePkg/Universal/Network/SnpDxe/Callback.c @@ -1,4 +1,8 @@ -/*++ +/** @file + This file contains two sets of callback routines for undi3.0 and undi3.1. + the callback routines for Undi3.1 have an extra parameter UniqueId which + stores the interface context for the NIC that snp is trying to talk. + Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -8,16 +12,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module name: - callback.c - -Abstract: - This file contains two sets of callback routines for undi3.0 and undi3.1. - the callback routines for Undi3.1 have an extra parameter UniqueId which - stores the interface context for the NIC that snp is trying to talk.. - ---*/ - +**/ #include "Snp.h" diff --git a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/Ia32/Ia32PcRtc.c b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/Ia32/Ia32PcRtc.c index b3be2cab40..576a9a3741 100644 --- a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/Ia32/Ia32PcRtc.c +++ b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/Ia32/Ia32PcRtc.c @@ -1,6 +1,7 @@ -/*++ +/** @file + Provides Set/Get time operations. -Copyright (c) 2006 - 2007 Intel Corporation.
+Copyright (c) 2006 - 2007, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,15 +10,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - Ia32PcRtc.c - -Abstract: - ---*/ +**/ #include "PcRtc.h" @@ -139,9 +132,9 @@ Routine Description: Arguments: - -Returns: + +Returns: --*/ // GC_TODO: ImageHandle - add argument and description to function comment // GC_TODO: SystemTable - add argument and description to function comment diff --git a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.c b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.c index 91e6b03f0b..f97a2b7e7b 100644 --- a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.c +++ b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.c @@ -1,6 +1,7 @@ -/*++ +/** @file + RTC Architectural Protocol GUID as defined in DxeCis 0.96. -Copyright (c) 2006 - 2007 Intel Corporation.
+Copyright (c) 2006 - 2007, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,17 +10,7 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - PcRtc.c - -Abstract: - - RTC Architectural Protocol GUID as defined in DxeCis 0.96 - ---*/ +**/ #include "PcRtc.h" diff --git a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.h b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.h index 6189daac39..b120d09819 100644 --- a/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.h +++ b/MdeModulePkg/Universal/PcatRealTimeClockRuntimeDxe/PcRtc.h @@ -1,6 +1,7 @@ -/*++ +/** @file + Header file for real time clock driver. -Copyright (c) 2006 - 2007 Intel Corporation.
+Copyright (c) 2006 - 2007, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -9,19 +10,8 @@ http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ -Module Name: - - PcRtc.h - -Abstract: - - Include for real time clock driver - -Revision History - - ---*/ #ifndef _RTC_H_ #define _RTC_H_ diff --git a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c index d0ebe8de62..47450d3a09 100644 --- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c +++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c @@ -1,4 +1,5 @@ -/** +/** @file + Installs Single Segment Pci Configuration PPI. Copyright (c) 2006 - 2007, Intel Corporation All rights reserved. This program and the accompanying materials @@ -27,9 +28,9 @@ @param Address PCI address with EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format. - + @return The PCI address with PCI_LIB_ADDRESS format. - + **/ STATIC UINTN @@ -69,7 +70,7 @@ PciCfgAddressConvert ( **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Read ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, @@ -103,7 +104,7 @@ PciCfg2Read ( **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Write ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, @@ -143,7 +144,7 @@ PciCfg2Write ( **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Modify ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, @@ -209,7 +210,7 @@ EFI_PEI_PPI_DESCRIPTOR gPciCfg2PpiList = { **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Read ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, @@ -260,7 +261,7 @@ PciCfg2Read ( **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Write ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, @@ -317,7 +318,7 @@ PciCfg2Write ( **/ EFI_STATUS -EFIAPI +EFIAPI PciCfg2Modify ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_PCI_CFG2_PPI *This, -- 2.39.2