diff options
Diffstat (limited to 'DuetPkg/Include/Protocol/LegacyBiosThunk.h')
-rw-r--r-- | DuetPkg/Include/Protocol/LegacyBiosThunk.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/DuetPkg/Include/Protocol/LegacyBiosThunk.h b/DuetPkg/Include/Protocol/LegacyBiosThunk.h new file mode 100644 index 0000000000..fd84389207 --- /dev/null +++ b/DuetPkg/Include/Protocol/LegacyBiosThunk.h @@ -0,0 +1,119 @@ +/*++
+
+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:
+
+ LegacyBiosThunk.h
+
+Abstract:
+
+ The EFI Legacy BIOS Thunk Protocol is used to abstract Thunk16 call.
+
+ Note: The names for EFI_IA32_REGISTER_SET elements were picked to follow
+ well known naming conventions.
+
+ Thunk - A thunk is a transition from one processor mode to another. A Thunk
+ is a transition from native EFI mode to 16-bit mode. A reverse thunk
+ would be a transition from 16-bit mode to native EFI mode.
+
+
+ Note: Note: Note: Note: Note: Note: Note:
+
+ You most likely should not use this protocol! Find the EFI way to solve the
+ problem to make your code portable
+
+ Note: Note: Note: Note: Note: Note: Note:
+
+Revision History
+
+--*/
+
+#ifndef _EFI_LEGACY_BIOS_THUNK_H_
+#define _EFI_LEGACY_BIOS_THUNK_H_
+
+
+#define EFI_LEGACY_BIOS_THUNK_PROTOCOL_GUID \
+ { \
+ 0x4c51a7ba, 0x7195, 0x442d, 0x87, 0x92, 0xbe, 0xea, 0x6e, 0x2f, 0xf6, 0xec \
+ }
+
+typedef struct _EFI_LEGACY_BIOS_THUNK_PROTOCOL EFI_LEGACY_BIOS_THUNK_PROTOCOL;
+
+typedef
+BOOLEAN
+(EFIAPI *EFI_LEGACY_BIOS_THUNK_INT86) (
+ IN EFI_LEGACY_BIOS_THUNK_PROTOCOL * This,
+ IN UINT8 BiosInt,
+ IN OUT EFI_IA32_REGISTER_SET * Regs
+ )
+/*++
+
+ Routine Description:
+ Thunk to 16-bit real mode and execute a software interrupt with a vector
+ of BiosInt. Regs will contain the 16-bit register context on entry and
+ exit.
+
+ Arguments:
+ This - Protocol instance pointer.
+ BiosInt - Processor interrupt vector to invoke
+ Reg - Register contexted passed into (and returned) from thunk to
+ 16-bit mode
+
+ Returns:
+ FALSE - Thunk completed, and there were no BIOS errors in the target code.
+ See Regs for status.
+ TRUE - There was a BIOS erro in the target code.
+
+--*/
+;
+
+typedef
+BOOLEAN
+(EFIAPI *EFI_LEGACY_BIOS_THUNK_FARCALL86) (
+ IN EFI_LEGACY_BIOS_THUNK_PROTOCOL * This,
+ IN UINT16 Segment,
+ IN UINT16 Offset,
+ IN EFI_IA32_REGISTER_SET * Regs,
+ IN VOID *Stack,
+ IN UINTN StackSize
+ )
+/*++
+
+ Routine Description:
+ Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the
+ 16-bit register context on entry and exit. Arguments can be passed on
+ the Stack argument
+
+ Arguments:
+ This - Protocol instance pointer.
+ Segment - Segemnt of 16-bit mode call
+ Offset - Offset of 16-bit mdoe call
+ Reg - Register contexted passed into (and returned) from thunk to
+ 16-bit mode
+ Stack - Caller allocated stack used to pass arguments
+ StackSize - Size of Stack in bytes
+
+ Returns:
+ FALSE - Thunk completed, and there were no BIOS errors in the target code.
+ See Regs for status.
+ TRUE - There was a BIOS erro in the target code.
+
+--*/
+;
+
+struct _EFI_LEGACY_BIOS_THUNK_PROTOCOL {
+ EFI_LEGACY_BIOS_THUNK_INT86 Int86;
+ EFI_LEGACY_BIOS_THUNK_FARCALL86 FarCall86;
+};
+
+extern EFI_GUID gEfiLegacyBiosThunkProtocolGuid;
+
+#endif
|