aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-03-25 18:02:00 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-03-25 18:02:00 +0000
commit6131fde768de12a5e56127096c828525b08232d3 (patch)
treea029c5e7fb75aacf0f8b5673bb276c69fb55d574
parent2526bd99954c96fad7b544630a1eb9584a9a357b (diff)
downloadxen-6131fde768de12a5e56127096c828525b08232d3.tar.gz
xen-6131fde768de12a5e56127096c828525b08232d3.tar.bz2
xen-6131fde768de12a5e56127096c828525b08232d3.zip
Prefix unnamed union structure fields with __extension__ to make it
work properly even in e.g. C99 standard mode. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
-rw-r--r--tools/include/xen-foreign/mkheader.py2
-rw-r--r--xen/include/public/arch-ia64.h12
-rw-r--r--xen/include/public/arch-x86/xen-x86_64.h2
3 files changed, 9 insertions, 7 deletions
diff --git a/tools/include/xen-foreign/mkheader.py b/tools/include/xen-foreign/mkheader.py
index 3d75a7a4b6..ba6f98cfce 100644
--- a/tools/include/xen-foreign/mkheader.py
+++ b/tools/include/xen-foreign/mkheader.py
@@ -38,7 +38,7 @@ inttypes["x86_64"] = {
};
header["x86_64"] = """
#ifdef __GNUC__
-# define __DECL_REG(name) union { uint64_t r ## name, e ## name; }
+# define __DECL_REG(name) __extension__ union { uint64_t r ## name, e ## name; }
# define __align8__ __attribute__((aligned (8)))
#else
# define __DECL_REG(name) uint64_t r ## name
diff --git a/xen/include/public/arch-ia64.h b/xen/include/public/arch-ia64.h
index e4cf73fc17..afb2a52164 100644
--- a/xen/include/public/arch-ia64.h
+++ b/xen/include/public/arch-ia64.h
@@ -64,6 +64,8 @@ typedef unsigned long xen_pfn_t;
#ifndef __ASSEMBLY__
+#define __anonymous_union __extension__ union
+
typedef unsigned long xen_ulong_t;
#ifdef __XEN_TOOLS__
@@ -165,11 +167,11 @@ struct mapped_regs {
unsigned long reserved1[29];
unsigned long vhpi;
unsigned long reserved2[95];
- union {
+ __anonymous_union {
unsigned long vgr[16];
unsigned long bank1_regs[16]; // bank1 regs (r16-r31) when bank0 active
};
- union {
+ __anonymous_union {
unsigned long vbgr[16];
unsigned long bank0_regs[16]; // bank0 regs (r16-r31) when bank1 active
};
@@ -180,7 +182,7 @@ struct mapped_regs {
unsigned long vpsr;
unsigned long vpr;
unsigned long reserved4[76];
- union {
+ __anonymous_union {
unsigned long vcr[128];
struct {
unsigned long dcr; // CR0
@@ -214,7 +216,7 @@ struct mapped_regs {
unsigned long rsv6[46];
};
};
- union {
+ __anonymous_union {
unsigned long reserved5[128];
struct {
unsigned long precover_ifs;
@@ -608,7 +610,7 @@ struct xen_ia64_boot_param {
struct xen_ia64_opt_feature {
unsigned long cmd; /* Which feature */
unsigned char on; /* Switch feature on/off */
- union {
+ __anonymous_union {
struct {
/* The page protection bit mask of the pte.
* This will be or'ed with the pte. */
diff --git a/xen/include/public/arch-x86/xen-x86_64.h b/xen/include/public/arch-x86/xen-x86_64.h
index 843c0bbbdc..d07f03904b 100644
--- a/xen/include/public/arch-x86/xen-x86_64.h
+++ b/xen/include/public/arch-x86/xen-x86_64.h
@@ -142,7 +142,7 @@ struct iret_context {
#ifdef __GNUC__
/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */
-#define __DECL_REG(name) union { \
+#define __DECL_REG(name) __extension__ union { \
uint64_t r ## name, e ## name; \
uint32_t _e ## name; \
}