From owner-svn-src-all@FreeBSD.ORG Thu Mar 12 21:46:55 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 376B86DC; Thu, 12 Mar 2015 21:46:55 +0000 (UTC) Received: from d.mail.sonic.net (d.mail.sonic.net [64.142.111.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 159D8F45; Thu, 12 Mar 2015 21:46:54 +0000 (UTC) Received: from aurora.physics.berkeley.edu (aurora.Physics.Berkeley.EDU [128.32.117.67]) (authenticated bits=0) by d.mail.sonic.net (8.15.1/8.15.1) with ESMTPSA id t2CLkr19000510 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 12 Mar 2015 14:46:53 -0700 Message-ID: <5502094D.5090001@freebsd.org> Date: Thu, 12 Mar 2015 14:46:53 -0700 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: svn commit: r279937 - in head/sys/powerpc: include powerpc References: <201503122115.t2CLFdmi026986@svn.freebsd.org> <20150312212234.GS2379@kib.kiev.ua> <55020547.7050102@freebsd.org> <20150312213530.GT2379@kib.kiev.ua> In-Reply-To: <20150312213530.GT2379@kib.kiev.ua> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Sonic-CAuth: UmFuZG9tSVYsFIJJ666tUsDAxhHWm/cB8ZxLdFLSb45b2TxMqW4Vx3uRW+hd0fWXPoPfmp93Zu9hmUBRKL2dHWtMG7hk8rYUb/hd3S1wRyo= X-Sonic-ID: C;ZCjMSwHJ5BG+IL5YxQPdhw== M;itD9SwHJ5BG+IL5YxQPdhw== X-Spam-Flag: No X-Sonic-Spam-Details: 0.0/5.0 by cerberusd Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Mar 2015 21:46:55 -0000 On 03/12/15 14:35, Konstantin Belousov wrote: > On Thu, Mar 12, 2015 at 02:29:43PM -0700, Nathan Whitehorn wrote: >> On 03/12/15 14:22, Konstantin Belousov wrote: >>> On Thu, Mar 12, 2015 at 09:15:39PM +0000, Nathan Whitehorn wrote: >>>> Author: nwhitehorn >>>> Date: Thu Mar 12 21:15:38 2015 >>>> New Revision: 279937 >>>> URL: https://svnweb.freebsd.org/changeset/base/279937 >>>> >>>> Log: >>>> Provide VSX context in ucontext(3) API. >>>> >>>> Modified: >>>> head/sys/powerpc/include/ucontext.h >>>> head/sys/powerpc/powerpc/exec_machdep.c >>>> >>>> Modified: head/sys/powerpc/include/ucontext.h >>>> ============================================================================== >>>> --- head/sys/powerpc/include/ucontext.h Thu Mar 12 20:14:48 2015 (r279936) >>>> +++ head/sys/powerpc/include/ucontext.h Thu Mar 12 21:15:38 2015 (r279937) >>>> @@ -46,6 +46,7 @@ typedef struct __mcontext { >>>> uint32_t mc_av[2]; >>>> register_t mc_frame[42]; >>>> uint64_t mc_fpreg[33]; >>>> + uint64_t mc_vsxfpreg[32]; /* low-order half of VSR0-31 */ >>>> } mcontext_t __aligned(16); >>>> >>>> #if defined(_KERNEL) && defined(__powerpc64__) >>>> @@ -60,6 +61,7 @@ typedef struct __mcontext32 { >>>> uint32_t mc_av[2]; >>>> uint32_t mc_frame[42]; >>>> uint64_t mc_fpreg[33]; >>>> + uint64_t mc_vsxfpreg[32]; /* low-order half of VSR0-31 */ >>>> } mcontext32_t __aligned(16); >>>> #endif >>> It looks as if you broken the ABI compatibility by the change. Am I wrong ? >>> >> That is correct. It's a tier-2 platform and -CURRENT, so I'm not sure >> it's worth the compatibility shims. I'm happy to add them if you think >> otherwise. > You are main maintainer of PowerPC port, IMO, so it is your decision. > > Note that 'this is current' argument is not applicable, since the change > also breaks stable/* binaries. > > I do understand the argument of PowerPC being tier 2 architecture, but this > makes me sad. Anyway, it is yours. For x86, I have to introduce > getcontextx(3) mechanism. > This is a good point. I'll try to fix it. Is my understanding of how this works correct? 1. Provide a sysarch() for the extended FPU state. 2. Implement getcontextx() in the C library to fill extra properties if required. 3. Store state for signal trampoline in variable-sized stack area Implementation of (2) seems to rely on having spare members in ucontext, which PowerPC unfortunately does not have. Is there a way around that? -Nathan