From: Heinrich Schuchardt Date: Sat, 1 Oct 2022 13:00:21 +0000 (+0200) Subject: x86: fix longjmp() implementation X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=fc872ee84cd5dd3a74bf51ce6519377b0de4940f;p=u-boot.git x86: fix longjmp() implementation If longjmp(jmp_buf env, int val) is called with val = 0, the setjmp() macro must return 1. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- diff --git a/arch/x86/cpu/i386/setjmp.S b/arch/x86/cpu/i386/setjmp.S index 40b10dc8df..eceeafa7c8 100644 --- a/arch/x86/cpu/i386/setjmp.S +++ b/arch/x86/cpu/i386/setjmp.S @@ -49,12 +49,17 @@ longjmp: xchgl %eax, %edx #else movl 4(%esp), %edx /* jmp_ptr address */ + movl 8(%esp), %eax /* Return value */ #endif movl (%edx), %ebx movl 4(%edx), %esp movl 8(%edx), %ebp movl 12(%edx), %esi movl 16(%edx), %edi + test %eax, %eax + jnz nz + inc %eax +nz: jmp *20(%edx) .size longjmp, .-longjmp