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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to