aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/setjmp.h
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2020-03-30 10:03:56 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2020-04-01 14:30:51 +1100
commitc17eb4dca5a353a9dbbb8ad6934fe57af7165e91 (patch)
tree48c53baee0dce0a32bf5562565eb539373372a59 /arch/powerpc/include/asm/setjmp.h
parentpowerpc/cputable: Remove unnecessary copy of cpu_spec->oprofile_type (diff)
downloadlinux-dev-c17eb4dca5a353a9dbbb8ad6934fe57af7165e91.tar.xz
linux-dev-c17eb4dca5a353a9dbbb8ad6934fe57af7165e91.zip
powerpc: Make setjmp/longjmp signature standard
Declaring setjmp()/longjmp() as taking longs makes the signature non-standard, and makes clang complain. In the past, this has been worked around by adding -ffreestanding to the compile flags. The implementation looks like it only ever propagates the value (in longjmp) or sets it to 1 (in setjmp), and we only call longjmp with integer parameters. This allows removing -ffreestanding from the compilation flags. Fixes: c9029ef9c957 ("powerpc: Avoid clang warnings around setjmp and longjmp") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by: Clement Courbet <courbet@google.com> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200330080400.124803-1-courbet@google.com
Diffstat (limited to 'arch/powerpc/include/asm/setjmp.h')
-rw-r--r--arch/powerpc/include/asm/setjmp.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/setjmp.h b/arch/powerpc/include/asm/setjmp.h
index e9f81bb3f83b..f798e80e4106 100644
--- a/arch/powerpc/include/asm/setjmp.h
+++ b/arch/powerpc/include/asm/setjmp.h
@@ -7,7 +7,9 @@
#define JMP_BUF_LEN 23
-extern long setjmp(long *) __attribute__((returns_twice));
-extern void longjmp(long *, long) __attribute__((noreturn));
+typedef long jmp_buf[JMP_BUF_LEN];
+
+extern int setjmp(jmp_buf env) __attribute__((returns_twice));
+extern void longjmp(jmp_buf env, int val) __attribute__((noreturn));
#endif /* _ASM_POWERPC_SETJMP_H */