.model flat,C\r
.code\r
\r
+;------------------------------------------------------------------------------\r
+; VOID\r
+; EFIAPI\r
+; InternalLongJump (\r
+; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,\r
+; IN UINTN Value\r
+; );\r
+;------------------------------------------------------------------------------\r
InternalLongJump PROC\r
- pop eax\r
- pop edx\r
- pop eax\r
+ pop eax ; skip return address\r
+ pop edx ; edx <- JumpBuffer\r
+ pop eax ; eax <- Value\r
mov ebx, [edx]\r
mov esi, [edx + 4]\r
mov edi, [edx + 8]\r
mov ebp, [edx + 12]\r
mov esp, [edx + 16]\r
- jmp dword ptr [edx + 20]\r
+ jmp dword ptr [edx + 20] ; restore "eip"\r
InternalLongJump ENDP\r
\r
END\r