[PATCH] or1k: Correct longjmp return value

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] or1k: Correct longjmp return value

Martin Erik Werner
Invert equality check instruction to correct the return value handling
in longjmp.

The return value should be the value of the second argument to longjmp,
unless the argument value was 0 in which case it should be 1.

Previously, longjmp would set return value 1 if the second argument was
non-zero, and 0 if it was 0, which was incorrect.
---
 newlib/libc/machine/or1k/setjmp.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/newlib/libc/machine/or1k/setjmp.S b/newlib/libc/machine/or1k/setjmp.S
index 5c023278d..0b93a0342 100644
--- a/newlib/libc/machine/or1k/setjmp.S
+++ b/newlib/libc/machine/or1k/setjmp.S
@@ -70,7 +70,7 @@ longjmp:
   /* If the second argument to longjmp is zero, set return address to 1,
   otherwise set it to the value of the second argument */
  l.addi r11, r0, 1
- l.sfne r4, r0
+ l.sfeq r4, r0
  l.bf 1f
  l.nop
  l.addi r11, r4, 0
--
2.11.0

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] or1k: Correct longjmp return value

Corinna Vinschen
On Jun 26 17:44, Martin Erik Werner wrote:

> Invert equality check instruction to correct the return value handling
> in longjmp.
>
> The return value should be the value of the second argument to longjmp,
> unless the argument value was 0 in which case it should be 1.
>
> Previously, longjmp would set return value 1 if the second argument was
> non-zero, and 0 if it was 0, which was incorrect.
> ---
>  newlib/libc/machine/or1k/setjmp.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/newlib/libc/machine/or1k/setjmp.S b/newlib/libc/machine/or1k/setjmp.S
> index 5c023278d..0b93a0342 100644
> --- a/newlib/libc/machine/or1k/setjmp.S
> +++ b/newlib/libc/machine/or1k/setjmp.S
> @@ -70,7 +70,7 @@ longjmp:
>    /* If the second argument to longjmp is zero, set return address to 1,
>    otherwise set it to the value of the second argument */
>   l.addi r11, r0, 1
> - l.sfne r4, r0
> + l.sfeq r4, r0
>   l.bf 1f
>   l.nop
>   l.addi r11, r4, 0
> --
> 2.11.0
Pushed.

Thanks,
Corinna

--
Corinna Vinschen
Cygwin Maintainer
Red Hat

signature.asc (849 bytes) Download Attachment