From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Jan Beulich <JBeulich@suse.com>
Subject: [PATCH 7/8] xen/x86: Fix get_cpu_info() when built with clang
Date: Tue, 9 Feb 2016 20:01:47 +0000 [thread overview]
Message-ID: <1455048108-5045-8-git-send-email-andrew.cooper3@citrix.com> (raw)
In-Reply-To: <1455048108-5045-1-git-send-email-andrew.cooper3@citrix.com>
Clang understands the GCCism in use here, but still complains that sp is
unintialised. In such cases, resort to the older version of this code, which
directly reads %rsp into the temporary variable.
Note that we still keep the GCCism in the default case, as it causes GCC to
create rather better assembly.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
---
xen/include/asm-x86/current.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/xen/include/asm-x86/current.h b/xen/include/asm-x86/current.h
index f011d2d..15b99ff 100644
--- a/xen/include/asm-x86/current.h
+++ b/xen/include/asm-x86/current.h
@@ -47,7 +47,13 @@ struct cpu_info {
static inline struct cpu_info *get_cpu_info(void)
{
+#ifdef __clang__
+ /* Clang complains that sp in the else case is not initialised. */
+ unsigned long sp;
+ asm ( "mov %%rsp, %0" : "=r" (sp) );
+#else
register unsigned long sp asm("rsp");
+#endif
return (struct cpu_info *)((sp & ~(STACK_SIZE-1)) + STACK_SIZE) - 1;
}
--
2.1.4
next prev parent reply other threads:[~2016-02-09 20:01 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-09 20:01 [PATCH 0/8] xen/x86: Fix build with Clang 3.5 Andrew Cooper
2016-02-09 20:01 ` [PATCH 1/8] xen/lib: Fix ASSERT() to build with clang Andrew Cooper
2016-02-09 20:01 ` [PATCH 2/8] xen/misc: Remove or annotate possibly-unused functions Andrew Cooper
2016-02-10 10:42 ` Tim Deegan
2016-02-10 13:06 ` Jan Beulich
2016-02-10 13:15 ` Andrew Cooper
2016-02-09 20:01 ` [PATCH 3/8] xen/x86: Remove %z modifier from inline assembly Andrew Cooper
2016-02-10 13:10 ` Jan Beulich
2016-02-09 20:01 ` [PATCH 4/8] xen/x86: Fix section type mismatch in mm.c Andrew Cooper
2016-02-10 10:01 ` George Dunlap
2016-02-09 20:01 ` [PATCH 5/8] xen/x86: Improve annotation of autogen_entrypoints[] Andrew Cooper
2016-02-09 20:01 ` [PATCH 6/8] xen/x86: Avoid overriding initialisers in arrays Andrew Cooper
2016-02-10 10:11 ` George Dunlap
2016-02-10 13:22 ` Jan Beulich
2016-02-10 13:50 ` Andrew Cooper
2016-02-10 14:03 ` Jan Beulich
2016-02-10 14:13 ` George Dunlap
2016-02-16 7:06 ` Tian, Kevin
2016-02-09 20:01 ` Andrew Cooper [this message]
2016-02-09 20:01 ` [PATCH 8/8] x86/efi: Generate uefi_call_wrapper() when compiling with clang Andrew Cooper
2016-02-10 13:31 ` Jan Beulich
2016-02-10 13:41 ` Andrew Cooper
2016-02-10 19:11 ` Andrew Cooper
2016-02-11 10:45 ` Jan Beulich
2016-02-09 21:09 ` [PATCH 0/8] xen/x86: Fix build with Clang 3.5 Doug Goldstein
2016-02-10 9:28 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455048108-5045-8-git-send-email-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.