diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Core/CPU/IPF/efijump.h | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'Core/CPU/IPF/efijump.h')
-rw-r--r-- | Core/CPU/IPF/efijump.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/Core/CPU/IPF/efijump.h b/Core/CPU/IPF/efijump.h new file mode 100644 index 0000000..4a078ce --- /dev/null +++ b/Core/CPU/IPF/efijump.h @@ -0,0 +1,112 @@ +/*++ + +Copyright (c) 2004, 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: + + EfiJump.h + +Abstract: + + This is the Setjump/Longjump pair for an IA32 processor. + +--*/ + +#ifndef _EFI_JUMP_H_ +#define _EFI_JUMP_H_ + +#include EFI_GUID_DEFINITION (PeiTransferControl) + +// +// NOTE:Set/LongJump needs to have this buffer start +// at 16 byte boundary. Either fix the structure +// which call this buffer or fix inside SetJump/LongJump +// Choosing 1K buffer storage for now +// +typedef struct { + CHAR8 Buffer[1024]; +} EFI_JUMP_BUFFER; + +EFI_STATUS +SetJump ( + IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, + IN EFI_JUMP_BUFFER *Jump + ) +/*++ + +Routine Description: + + SetJump stores the current register set in the area pointed to +by "save". It returns zero. Subsequent calls to "LongJump" will +restore the registers and return non-zero to the same location. + On entry, r32 contains the pointer to the jmp_buffer + +Arguments: + + This - Calling context + Jump - Jump buffer + +Returns: + + Status code + +--*/ +; + +EFI_STATUS +LongJump ( + IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL *This, + IN EFI_JUMP_BUFFER *Jump + ) +/*++ + +Routine Description: + + LongJump initializes the register set to the values saved by a +previous 'SetJump' and jumps to the return location saved by that +'SetJump'. This has the effect of unwinding the stack and returning +for a second time to the 'SetJump'. + +Arguments: + + This - Calling context + Jump - Jump buffer + +Returns: + + Status code + +--*/ +; + +VOID +RtPioICacheFlush ( + IN VOID *StartAddress, + IN UINTN SizeInBytes + ) +/*++ + +Routine Description: + + Flushing the CPU instruction cache. + +Arguments: + + StartAddress - Start address to flush + SizeInBytes - Length in bytes to flush + +Returns: + + None + +--*/ +; + +#endif |