--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ LegacyBiosThunk.c\r
+ \r
+Abstract:\r
+\r
+ Legacy BIOS Thunk Protocol\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#include "Tiano.h"\r
+\r
+#include EFI_PROTOCOL_DEFINITION (LegacyBiosThunk)\r
+\r
+EFI_GUID gEfiLegacyBiosThunkProtocolGuid = EFI_LEGACY_BIOS_THUNK_PROTOCOL_GUID;\r
+\r
+EFI_GUID_STRING(&gEfiLegacyBiosThunkProtocolGuid, "Legacy BIOS Thunk Protocol", "Legacy BIOS Thunk Protocol");\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ LegacyBiosThunk.h\r
+ \r
+Abstract:\r
+\r
+ The EFI Legacy BIOS Thunk Protocol is used to abstract Thunk16 call.\r
+\r
+ Note: The names for EFI_IA32_REGISTER_SET elements were picked to follow \r
+ well known naming conventions.\r
+\r
+ Thunk - A thunk is a transition from one processor mode to another. A Thunk\r
+ is a transition from native EFI mode to 16-bit mode. A reverse thunk\r
+ would be a transition from 16-bit mode to native EFI mode.\r
+\r
+\r
+ Note: Note: Note: Note: Note: Note: Note:\r
+\r
+ You most likely should not use this protocol! Find the EFI way to solve the\r
+ problem to make your code portable\r
+\r
+ Note: Note: Note: Note: Note: Note: Note:\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#ifndef _EFI_LEGACY_BIOS_THUNK_H_\r
+#define _EFI_LEGACY_BIOS_THUNK_H_\r
+\r
+\r
+#define EFI_LEGACY_BIOS_THUNK_PROTOCOL_GUID \\r
+ { \\r
+ 0x4c51a7ba, 0x7195, 0x442d, 0x87, 0x92, 0xbe, 0xea, 0x6e, 0x2f, 0xf6, 0xec \\r
+ }\r
+\r
+typedef struct _EFI_LEGACY_BIOS_THUNK_PROTOCOL EFI_LEGACY_BIOS_THUNK_PROTOCOL;\r
+\r
+typedef\r
+BOOLEAN\r
+(EFIAPI *EFI_LEGACY_BIOS_THUNK_INT86) (\r
+ IN EFI_LEGACY_BIOS_THUNK_PROTOCOL * This,\r
+ IN UINT8 BiosInt,\r
+ IN OUT EFI_IA32_REGISTER_SET * Regs\r
+ )\r
+/*++\r
+\r
+ Routine Description:\r
+ Thunk to 16-bit real mode and execute a software interrupt with a vector \r
+ of BiosInt. Regs will contain the 16-bit register context on entry and \r
+ exit.\r
+\r
+ Arguments:\r
+ This - Protocol instance pointer.\r
+ BiosInt - Processor interrupt vector to invoke\r
+ Reg - Register contexted passed into (and returned) from thunk to \r
+ 16-bit mode\r
+\r
+ Returns:\r
+ FALSE - Thunk completed, and there were no BIOS errors in the target code.\r
+ See Regs for status.\r
+ TRUE - There was a BIOS erro in the target code.\r
+\r
+--*/\r
+;\r
+\r
+typedef\r
+BOOLEAN\r
+(EFIAPI *EFI_LEGACY_BIOS_THUNK_FARCALL86) (\r
+ IN EFI_LEGACY_BIOS_THUNK_PROTOCOL * This,\r
+ IN UINT16 Segment,\r
+ IN UINT16 Offset,\r
+ IN EFI_IA32_REGISTER_SET * Regs,\r
+ IN VOID *Stack,\r
+ IN UINTN StackSize\r
+ )\r
+/*++\r
+\r
+ Routine Description:\r
+ Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the \r
+ 16-bit register context on entry and exit. Arguments can be passed on \r
+ the Stack argument\r
+\r
+ Arguments:\r
+ This - Protocol instance pointer.\r
+ Segment - Segemnt of 16-bit mode call\r
+ Offset - Offset of 16-bit mdoe call\r
+ Reg - Register contexted passed into (and returned) from thunk to \r
+ 16-bit mode\r
+ Stack - Caller allocated stack used to pass arguments\r
+ StackSize - Size of Stack in bytes\r
+\r
+ Returns:\r
+ FALSE - Thunk completed, and there were no BIOS errors in the target code.\r
+ See Regs for status.\r
+ TRUE - There was a BIOS erro in the target code.\r
+\r
+--*/\r
+;\r
+\r
+struct _EFI_LEGACY_BIOS_THUNK_PROTOCOL {\r
+ EFI_LEGACY_BIOS_THUNK_INT86 Int86;\r
+ EFI_LEGACY_BIOS_THUNK_FARCALL86 FarCall86;\r
+};\r
+\r
+extern EFI_GUID gEfiLegacyBiosThunkProtocolGuid;\r
+\r
+#endif\r