diff options
author | Anton Blanchard <anton@au1.ibm.com> | 2013-08-17 18:34:40 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2013-10-04 10:37:59 +0930 |
commit | be1e5d311342e08ae1f8013342df27b7ded2c156 (patch) | |
tree | ccf1ca254c3aa1392262c72de0b960eb1ec7ec21 /ChangeLog | |
parent | fef13a78ea30d4c26d6bab48d731ebe864ee31b0 (diff) | |
download | glibc-be1e5d311342e08ae1f8013342df27b7ded2c156.tar.gz glibc-be1e5d311342e08ae1f8013342df27b7ded2c156.tar.xz glibc-be1e5d311342e08ae1f8013342df27b7ded2c156.zip |
PowerPC LE setjmp/longjmp
http://sourceware.org/ml/libc-alpha/2013-08/msg00089.html Little-endian fixes for setjmp/longjmp. When writing these I noticed the setjmp code corrupts the non volatile VMX registers when using an unaligned buffer. Anton fixed this, and also simplified it quite a bit. The current code uses boilerplate for the case where we want to store 16 bytes to an unaligned address. For that we have to do a read/modify/write of two aligned 16 byte quantities. In our case we are storing a bunch of back to back data (consective VMX registers), and only the start and end of the region need the read/modify/write. [BZ #15723] * sysdeps/powerpc/jmpbuf-offsets.h: Comment fix. * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Correct _dl_hwcap access for little-endian. * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise. Don't destroy vmx regs when saving unaligned. * sysdeps/powerpc/powerpc64/__longjmp-common.S: Correct CR load. * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise CR save. Don't destroy vmx regs when saving unaligned.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 89f51054e0..c106857c3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2013-10-04 Anton Blanchard <anton@au1.ibm.com> + Alistair Popple <alistair@ozlabs.au.ibm.com> + Alan Modra <amodra@gmail.com> + + [BZ #15723] + * sysdeps/powerpc/jmpbuf-offsets.h: Comment fix. + * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Correct + _dl_hwcap access for little-endian. + * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise. Don't + destroy vmx regs when saving unaligned. + * sysdeps/powerpc/powerpc64/__longjmp-common.S: Correct CR load. + * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise CR save. Don't + destroy vmx regs when saving unaligned. + 2013-10-04 Alan Modra <amodra@gmail.com> * sysdeps/powerpc/powerpc32/power4/hp-timing.h (HP_TIMING_NOW): |