[PATCH 1/2] x86: fix longjmp() implementation
Simon Glass
sjg at chromium.org
Mon Oct 3 03:10:36 CEST 2022
On Sat, 1 Oct 2022 at 07:05, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> If longjmp(jmp_buf env, int val) is called with val = 0, the setjmp()
> macro must return 1.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> arch/x86/cpu/i386/setjmp.S | 5 +++++
> 1 file changed, 5 insertions(+)
>
> 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
> --
> 2.37.2
>
Reviewed-by: Simon Glass <sjg at chromium.org>
More information about the U-Boot
mailing list