From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: [PATCH] Re: [Xen-staging] [xen-unstable] Explicitly tag every anonymous aggregate in the public headers. Date: Fri, 28 Mar 2008 15:04:26 -0600 Message-ID: <1206738267.7320.43.camel@lappy> References: <200803261016.m2QAGPsq017512@latara.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <200803261016.m2QAGPsq017512@latara.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-ia64-devel , xen-devel , Samuel Thibault List-Id: xen-devel@lists.xenproject.org On Wed, 2008-03-26 at 10:16 +0000, Xen staging patchbot-unstable wrote: > # HG changeset patch > # User Keir Fraser > # Date 1206526490 0 > # Node ID 5d25187bac941611a8a836b668a398a72df0afb0 > # Parent 966c04d42e94546287a1145c82e13073f28ef116 > Explicitly tag every anonymous aggregate in the public headers. My previous fix allowed this to build on ia64, but it turns out there's still a boot issue that I don't understand. As is, we take a nested dtlb fault on boot, which hg bisect determines is caused by this patch. From a simple test program, I can verify that only the outermost __extension__ is necessary to include code w/ -std=c99. So embedding an __extension__ within an __extension__ isn't necessary, but I don't know why it actually changes the behavior of the code. The patch below reverts a few chucks of this cset and gets us booting again. FWIW, I'm using gcc-4.1.2. Thanks, Alex Signed-off-by: Alex Williamson --- diff -r 6736c28a0d35 xen/include/public/arch-ia64.h --- a/xen/include/public/arch-ia64.h Fri Mar 28 17:58:36 2008 +0000 +++ b/xen/include/public/arch-ia64.h Fri Mar 28 14:51:41 2008 -0600 @@ -182,7 +182,7 @@ struct mapped_regs { unsigned long reserved4[76]; __anonymous_union { unsigned long vcr[128]; - __anonymous_struct { + struct { unsigned long dcr; // CR0 unsigned long itm; unsigned long iva; @@ -216,7 +216,7 @@ struct mapped_regs { }; __anonymous_union { unsigned long reserved5[128]; - __anonymous_struct { + struct { unsigned long precover_ifs; unsigned long unat; // not sure if this is needed until NaT arch is done int interrupt_collection_enabled; // virtual psr.ic @@ -609,7 +609,7 @@ struct xen_ia64_opt_feature { unsigned long cmd; /* Which feature */ unsigned char on; /* Switch feature on/off */ __anonymous_union { - __anonymous_struct { + struct { /* The page protection bit mask of the pte. * This will be or'ed with the pte. */ unsigned long pgprot;