Re: signal 8 (floating point exception) upon resume

From: Adrian Chadd <adrian_at_freebsd.org>
Date: Tue, 25 Mar 2014 14:38:50 -0700
On 25 March 2014 12:46, John Baldwin <jhb_at_freebsd.org> wrote:
> On Sunday, March 23, 2014 4:41:24 pm Adrian Chadd wrote:
>> [snip]
>>
>> Hi,
>>
>> As part of this thread, a whole lot of stuff was thrown around to try
>> and fix / improve the correctness of this.
>>
>> But it still happens to me in -HEAD i386. I updated to r263418 and
>> it's now doing it around 30-50% of the time I resume.
>
> Yes, nothing has changed in HEAD.
>
>> So, since I really am trying to avoid getting neck deep in learning
>> (by myself) a new thing right now, would someone be willing to help me
>> through the process of (a) learning how this is all supposed to work
>> (which thanks to jhb and bde, I think I've learnt from the posts in
>> this thread) and (b) some things to try out? I'll be able to report
>> the results of this pretty quickly.
>
> You can try www.freebsd.org/~jhb/patches/i386_fpu_suspend2.patch.  You
> could have tried the first patch I posted here earlier when I first
> posted it as well. :)

There was a lot of chatter, I thought it was prudent to let it all
settle before jumping in.

Anyway:

--- npx.o ---
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:769:18:
error: declaration of 'union safefpu' will not be visible outside of
this function [-Werror,-Wvisibility]
npxsuspend(union safefpu *addr)
                 ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:769:1:
error: conflicting types for 'npxsuspend'
npxsuspend(union safefpu *addr)
^
./machine/npx.h:59:6: note: previous declaration is here
void    npxsuspend(union savefpu *addr);
        ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:776:9:
error: incomplete type 'union safefpu' is not assignable
                *addr = npx_initialstate;
                ~~~~~ ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:769:18:
note: forward declaration of 'union safefpu'
npxsuspend(union safefpu *addr)
                 ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:779:8:
error: implicit declaration of function 'rcr' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
        cr0 = rcr(0);
              ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:781:10:
error: incompatible pointer types passing 'union safefpu *' to
parameter of type 'union savefpu *'
[-Werror,-Wincompatible-pointer-types]
        fpusave(addr);
                ^~~~
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:160:36:
note: passing argument to parameter here
static  void    fpusave(union savefpu *);
                                       ^
/usr/home/adrian/work/freebsd/head/src/sys/i386/isa/npx.c:782:2:
error: implicit declaration of function 'load_cr' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
        load_cr(0, cr0);
        ^
6 errors generated.
*** [npx.o] Error code 1



-a
Received on Tue Mar 25 2014 - 20:38:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:47 UTC