]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h
Renamed to match filename naming recommendations.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Pei / PeiLib / Ipf / EfiJump.h
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h
new file mode 100644 (file)
index 0000000..cec5364
--- /dev/null
@@ -0,0 +1,112 @@
+/*++\r
+\r
+Copyright (c) 2004, 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
+  EfiJump.h\r
+\r
+Abstract:\r
+\r
+  This is the Setjump/Longjump pair for an IA32 processor.\r
+\r
+--*/\r
+\r
+#ifndef _EFI_JUMP_H_\r
+#define _EFI_JUMP_H_\r
+\r
+#include EFI_GUID_DEFINITION (PeiTransferControl)\r
+\r
+//\r
+//  NOTE:Set/LongJump needs to have this buffer start\r
+//  at 16 byte boundary. Either fix the structure\r
+//  which call this buffer or fix inside SetJump/LongJump\r
+//  Choosing 1K buffer storage for now\r
+//\r
+typedef struct {\r
+  CHAR8 Buffer[1024];\r
+} EFI_JUMP_BUFFER;\r
+\r
+EFI_STATUS\r
+SetJump (\r
+  IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL  *This,\r
+  IN EFI_JUMP_BUFFER                    *Jump\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  SetJump stores the current register set in the area pointed to\r
+by "save".  It returns zero.  Subsequent calls to "LongJump" will\r
+restore the registers and return non-zero to the same location.\r
+  On entry, r32 contains the pointer to the jmp_buffer\r
+  \r
+Arguments:\r
+  \r
+  This  - Calling context\r
+  Jump  - Jump buffer\r
+\r
+Returns:\r
+\r
+  Status code\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+LongJump (\r
+  IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL  *This,\r
+  IN EFI_JUMP_BUFFER                    *Jump\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  LongJump initializes the register set to the values saved by a\r
+previous 'SetJump' and jumps to the return location saved by that\r
+'SetJump'.  This has the effect of unwinding the stack and returning\r
+for a second time to the 'SetJump'.\r
+\r
+Arguments:\r
+\r
+  This  - Calling context\r
+  Jump  - Jump buffer\r
+\r
+Returns:\r
+\r
+  Status code\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+RtPioICacheFlush (\r
+  IN  VOID    *StartAddress,\r
+  IN  UINTN   SizeInBytes\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Flushing the CPU instruction cache.\r
+\r
+Arguments:\r
+\r
+  StartAddress  - Start address to flush\r
+  SizeInBytes   - Length in bytes to flush\r
+\r
+Returns:\r
+\r
+  None\r
+\r
+--*/\r
+;\r
+\r
+#endif\r