svn commit: r315974 - in head: lib/libthread_db/arch/arm sys/arm/arm sys/arm/include
Michal Meloun
melounmichal at gmail.com
Tue Mar 28 10:20:04 UTC 2017
On 27.03.2017 19:40, Warner Losh wrote:
> On Mon, Mar 27, 2017 at 11:07 AM, John Baldwin <jhb at freebsd.org> wrote:
>> On Sunday, March 26, 2017 08:36:56 AM Michal Meloun wrote:
>>> Author: mmel
>>> Date: Sun Mar 26 08:36:56 2017
>>> New Revision: 315974
>>> URL: https://svnweb.freebsd.org/changeset/base/315974
>>>
>>> Log:
>>> Preserve VFP state across signal delivery.
>>>
>>> We don't have enouch space to store full VFP context within mcontext
>>> stucture. Due to this:
>>> - follow i386/amd64 way and store VFP state outside of the mcontext_t
>>> but point to it. Use the size of VFP state structure as an 'magic'
>>> indicator of the saved VFP state presence.
>>> - teach set_mcontext() about this external storage.
>>> - for signal delivery, store VFP state to expanded 'struct sigframe'.
>>>
>>> Submited by: Andrew Gierth (initial version)
>>> PR: 217611
>>> MFC after: 2 weeks
>>>
>>> Modified:
>>> head/lib/libthread_db/arch/arm/libpthread_md.c
>>> head/sys/arm/arm/machdep.c
>>> head/sys/arm/include/frame.h
>>> head/sys/arm/include/ucontext.h
>>>
>>> Modified: head/lib/libthread_db/arch/arm/libpthread_md.c
>>> ==============================================================================
>>> --- head/lib/libthread_db/arch/arm/libpthread_md.c Sun Mar 26 08:36:20 2017 (r315973)
>>> +++ head/lib/libthread_db/arch/arm/libpthread_md.c Sun Mar 26 08:36:56 2017 (r315974)
>>> @@ -90,7 +90,9 @@ pt_fpreg_to_ucontext(const struct fpreg
>>> mcontext_t *mc = &uc->uc_mcontext;
>>>
>>> /* XXX */
>>> - memset(&mc->mc_spare, 0, sizeof(mc->mc_spare));
>>> + mc->mc_vfp_size = 0;
>>> + mc->mc_vfp_ptr = NULL;
>>> + memset(mc->mc_spare, 0, sizeof(mc->mc_spare));
>>> }
>> I suspect you don't need this bit? Has FreeBSD/arm ever supported VFP on a release
>> that also shipped libkse? (i.e. not libthr but the other thread library)
> No. And even if we had, we blew up binary compat when we went from OABI to EABI.
>
> Warner
I just wanted to maintain the status quo, nothing more.
All I know is that none of threading libraries maintains VFP state,
'struct fpreg' is badly defined (is to short for fill VFP context), and
pre r315974 kernel doesn't initialize _vfp (renamed to mc_spare) part
of mcontext_t.
So I'm seeking a way how to fix all this. But I'm not familiar with
kse -> pthread transition history, so I'm not sure which parts are
actively used.
Michal
More information about the svn-src-all
mailing list