]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/LongJump.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Library / BaseLib / LongJump.c
1 /** @file
2 Long Jump functions.
3
4 Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #include "BaseLibInternals.h"
10
11 /**
12 Restores the CPU context that was saved with SetJump().
13
14 Restores the CPU context from the buffer specified by JumpBuffer. This
15 function never returns to the caller. Instead is resumes execution based on
16 the state of JumpBuffer.
17
18 If JumpBuffer is NULL, then ASSERT().
19 For IPF CPUs, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
20 If Value is 0, then ASSERT().
21
22 @param JumpBuffer A pointer to CPU context buffer.
23 @param Value The value to return when the SetJump() context is
24 restored and must be non-zero.
25
26 **/
27 VOID
28 EFIAPI
29 LongJump (
30 IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
31 IN UINTN Value
32 )
33 {
34 InternalAssertJumpBuffer (JumpBuffer);
35 ASSERT (Value != 0);
36
37 InternalLongJump (JumpBuffer, Value);
38 }