diff mbox

[trivial] unicore32: convert get_sp_from_cpustate from macro to inline

Message ID 1451382219-5159-1-git-send-email-mjt@msgid.tls.msk.ru
State New
Headers show

Commit Message

Michael Tokarev Dec. 29, 2015, 9:43 a.m. UTC
All other architectures define get_sp_from_cpustate as an inline function,
only unicore32 uses a #define.  With this, some usages are impossible, for
example, enabling sigaltstack in linux-user/syscall.c results in

linux-user/syscall.c: In function ‘do_syscall’:
linux-user/syscall.c:8299:39: error: dereferencing ‘void *’ pointer [-Werror]
  get_sp_from_cpustate(arg1, arg2, get_sp_from_cpustate((CPUArchState *)cpu_env));
                                       ^
linux-user/syscall.c:8299:39: error: request for member ‘regs’ in something not a structure or union

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 linux-user/unicore32/target_signal.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Peter Maydell Dec. 29, 2015, 1:53 p.m. UTC | #1
On 29 December 2015 at 09:43, Michael Tokarev <mjt@tls.msk.ru> wrote:
> All other architectures define get_sp_from_cpustate as an inline function,
> only unicore32 uses a #define.  With this, some usages are impossible, for
> example, enabling sigaltstack in linux-user/syscall.c results in
>
> linux-user/syscall.c: In function ‘do_syscall’:
> linux-user/syscall.c:8299:39: error: dereferencing ‘void *’ pointer [-Werror]
>   get_sp_from_cpustate(arg1, arg2, get_sp_from_cpustate((CPUArchState *)cpu_env));
>                                        ^
> linux-user/syscall.c:8299:39: error: request for member ‘regs’ in something not a structure or union

I think this is a bug in the macro implementation (lack of
brackets around the macro argument on its RHS) rather than
a macro being impossible to use for this, but I agree that
the inline function is better both for consistency with other
targets and as a style issue.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM
diff mbox

Patch

diff --git a/linux-user/unicore32/target_signal.h b/linux-user/unicore32/target_signal.h
index 8b255c4..7c44238 100644
--- a/linux-user/unicore32/target_signal.h
+++ b/linux-user/unicore32/target_signal.h
@@ -21,6 +21,10 @@  typedef struct target_sigaltstack {
 #define TARGET_SS_ONSTACK               1
 #define TARGET_SS_DISABLE               2
 
-#define get_sp_from_cpustate(cpustate)  (cpustate->regs[29])
+static inline abi_ulong get_sp_from_cpustate(CPUUniCore32State *state)
+{
+    return state->regs[29];
+}
+
 
 #endif /* TARGET_SIGNAL_H */