3 Copyright (c) 2004, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 This is the Setjump/Longjump pair for an IA32 processor.
25 #include EFI_GUID_DEFINITION (PeiTransferControl)
28 // NOTE:Set/LongJump needs to have this buffer start
29 // at 16 byte boundary. Either fix the structure
30 // which call this buffer or fix inside SetJump/LongJump
31 // Choosing 1K buffer storage for now
39 IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL
*This
,
40 IN EFI_JUMP_BUFFER
*Jump
46 SetJump stores the current register set in the area pointed to
47 by "save". It returns zero. Subsequent calls to "LongJump" will
48 restore the registers and return non-zero to the same location.
49 On entry, r32 contains the pointer to the jmp_buffer
53 This - Calling context
65 IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL
*This
,
66 IN EFI_JUMP_BUFFER
*Jump
72 LongJump initializes the register set to the values saved by a
73 previous 'SetJump' and jumps to the return location saved by that
74 'SetJump'. This has the effect of unwinding the stack and returning
75 for a second time to the 'SetJump'.
79 This - Calling context
91 IN VOID
*StartAddress
,
98 Flushing the CPU instruction cache.
102 StartAddress - Start address to flush
103 SizeInBytes - Length in bytes to flush