From f493cf81fe1468d145d6b6d5494ff569251902b5 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Mon, 30 May 2016 18:51:58 -0700 Subject: [PATCH] MdePkg BaseLib: Convert Ia32/LongJump.asm to NASM The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert Ia32/LongJump.asm to Ia32/LongJump.nasm Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen --- MdePkg/Library/BaseLib/BaseLib.inf | 2 ++ MdePkg/Library/BaseLib/Ia32/LongJump.nasm | 43 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 MdePkg/Library/BaseLib/Ia32/LongJump.nasm diff --git a/MdePkg/Library/BaseLib/BaseLib.inf b/MdePkg/Library/BaseLib/BaseLib.inf index 35d61cc5d8..3f3303f7e6 100644 --- a/MdePkg/Library/BaseLib/BaseLib.inf +++ b/MdePkg/Library/BaseLib/BaseLib.inf @@ -305,6 +305,7 @@ Ia32/LShiftU64.asm | INTEL Ia32/LRotU64.nasm| INTEL Ia32/LRotU64.asm | INTEL + Ia32/LongJump.nasm| INTEL Ia32/LongJump.asm | INTEL Ia32/Invd.asm | INTEL Ia32/FxRestore.asm | INTEL @@ -347,6 +348,7 @@ Ia32/Monitor.S | GCC Ia32/CpuIdEx.S | GCC Ia32/CpuId.S | GCC + Ia32/LongJump.nasm| GCC Ia32/LongJump.S | GCC Ia32/SetJump.nasm| GCC Ia32/SetJump.S | GCC diff --git a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm new file mode 100644 index 0000000000..7ef03462ee --- /dev/null +++ b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm @@ -0,0 +1,43 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, 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: +; +; LongJump.Asm +; +; Abstract: +; +; Implementation of _LongJump() on IA-32. +; +;------------------------------------------------------------------------------ + + SECTION .text + +;------------------------------------------------------------------------------ +; VOID +; EFIAPI +; InternalLongJump ( +; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer, +; IN UINTN Value +; ); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalLongJump) +ASM_PFX(InternalLongJump): + pop eax ; skip return address + pop edx ; edx <- JumpBuffer + pop eax ; eax <- Value + mov ebx, [edx] + mov esi, [edx + 4] + mov edi, [edx + 8] + mov ebp, [edx + 12] + mov esp, [edx + 16] + jmp dword [edx + 20] ; restore "eip" +