riscv: simplify longjmp
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 23 Mar 2021 18:11:26 +0000 (19:11 +0100)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Thu, 8 Apr 2021 07:37:29 +0000 (15:37 +0800)
The value returned by setjmp must be nonzero. If zero is passed as
parameter it must be replaced by 1.

This patch reduces the code size a bit.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
arch/riscv/lib/setjmp.S

index 72bc924..99d6195 100644 (file)
@@ -54,12 +54,8 @@ ENTRY(longjmp)
        LOAD_IDX(sp, 13)
 
        /* Move the return value in place, but return 1 if passed 0. */
-       beq a1, zero, longjmp_1
-       mv a0, a1
-       ret
-
-       longjmp_1:
-       li a0, 1
+       seqz a0, a1
+       add a0, a0, a1
        ret
 ENDPROC(longjmp)
 .popsection