123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- From 6d87fc890c3de81ee33baf25d7c3c86532f26060 Mon Sep 17 00:00:00 2001
- From: Joel Stanley <joel@jms.id.au>
- Date: Mon, 9 May 2022 20:27:58 +0930
- Subject: [PATCH] return: Fix PowerPC assembly
- The original assembly used suspicious syntax. However, due to the
- !defined(__OPTIMIZE__) guard this code was rarely built.
- There nothing to stop the compiler using r0 between the two asm blocks,
- which may have been the cause of the note mentioning it failed when
- build with optimisation enabled.
- Write a single asm statement that places the result in the given
- location.
- This builds for powerpc64le and passes tests.
- Signed-off-by: Joel Stanley <joel@jms.id.au>
- Upstream: https://github.com/j256/dmalloc/pull/113
- ---
- return.h | 13 +++----------
- 1 file changed, 3 insertions(+), 10 deletions(-)
- diff --git a/return.h b/return.h
- index 55b9369fe12d..fafbe3754f0f 100644
- --- a/return.h
- +++ b/return.h
- @@ -260,20 +260,13 @@ asm void ASM_GET_RET_ADDR(file)
- /*************************************/
-
- /*
- - * For Powerpc 603 based system running LynxOS 2.3.1 using gcc/gas.
- - */
- -#if defined(__powerpc__) && defined(__GNUC__) && !defined(__OPTIMIZE__)
- -
- -/*
- - * This won't compile if "-O2" is used, but it seems to work fine with
- - * "-O0". I'm no assembler expert; I was happy enough to come up with
- - * something that works at all... :-)
- + * For PowerPC using gcc/gas.
- */
- +#if defined(__powerpc__) && defined(__GNUC__)
-
- #define GET_RET_ADDR(file) \
- do { \
- - asm("mflr 0"); \
- - asm("stw 0,%0" : "=g" (file)); \
- + asm("mflr %0" : "=r" (file)); \
- } while(0)
-
- #endif /* __powerpc__ && __GNUC__ && !__OPTIMIZE__ */
- --
- 2.35.1
|