On Fri, Oct 14, 2005 at 06:17:46AM +0200, Aurelien Jarno wrote: > I have attached a patch that changes the alignment of the f_env type. I > have tested it separately from the glibc, it works.
Yes, your patch looks right. Please also add the following comment in front of the fenv_t declaration. It will help explain what's going on: /* While fr0-fr3 appear as 64-bit registers, they aren't 64-bit quantities. * They are really one 32-bit status register and seven 32-bit exception * registers. We just sodomize the fpu 64-bit store semantics for efficiency. * * 8 byte alignment is "only" needed for performance. * Normally the kernel will squawk about (but handle) unaligned accesses. * * fr4 is the first usable FP register. */ The above is a summary of an IRC conversation with the hppa glibc guru (Carlos O'donell), Kyle Mcmartin, and myself. > However, I would prefer that some people have a look to the > asm code of the glibc to see what can be done. Sorry - I've no clue where the offending asm lives. The asm ( 4 fstd ops) posted by Stephen Gran looked fine to me. I don't think anything needs to be done. BTW, the test case posted by Stephan Gran (sgran) does NOT fail for me. grundler <523>gcc-3.4 -lm fptest.c -o test.3.4 grundler <524>gcc-4.0 -lm fptest.c -o test.4.0 grundler <525>./test.3.4 grundler <526>./test.4.0 grundler <527> Here's what I get in the dmesg log instead of SIGBUS: test.4.0(3857): unaligned access to 0x00000000bff4244c at ip=0x000000004044e9ff test.4.0(3857): unaligned access to 0x00000000bff4244c at ip=0x000000004044ea03 test.4.0(3857): unaligned access to 0x00000000bff4243c at ip=0x000000004044ea07 N.b.: I don't have high confidence in this kernel outout: o I should see 4 lines of output - one for each fstd op. o unaligned addresses should be 8 bytes apart, incrementing. And for the record: grundler <566>uname -a Linux gsyprf11.external.hp.com 2.6.14-rc2-pa2 #2 SMP Thu Sep 29 20:24:31 PDT 2005 parisc64 GNU/Linux gcc version 3.4.5 20050706 (prerelease) (Debian 3.4.4-5) gcc version 4.0.2 (Debian 4.0.2-2) hth, grant -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]