diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-11-19 06:12:51 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-11-19 06:12:51 +0000 |
commit | c9002c1b7a648fe49b8472d6dc6724c78fa1329f (patch) | |
tree | b9a61d0ea66ac08f3bc064d1ddd8823a3e65ebba /sysdeps/ia64/memccpy.S | |
parent | ad7f28c29d06ddb4506d0d75e089732740b5bd2b (diff) | |
download | glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.gz glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.xz glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.zip |
Update.
2003-11-14 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/sysdep.h (GAS_ALIGN_BREAKS_UNWIND_INFO): Define this macro to indicate that all existing GAS versions have a problem with .align inside a function. * sysdeps/ia64/memccpy.S: Work around GAS_ALIGN_BREAKS_UNWIND_INFO bug. * sysdeps/ia64/memcpy.S: Likewise. * sysdeps/ia64/memset.S: Likewise. * sysdeps/ia64/memmove.S: Likewise. Also move the jump-table to out of .text into .rodata, where it belongs. * sysdeps/unix/sysv/linux/ia64/pipe.S: There is no need to save/restore input-arguments, because they're necessarily preserved by the kernel to support syscall-restart.
Diffstat (limited to 'sysdeps/ia64/memccpy.S')
-rw-r--r-- | sysdeps/ia64/memccpy.S | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sysdeps/ia64/memccpy.S b/sysdeps/ia64/memccpy.S index 6bccb96b70..53c43c512b 100644 --- a/sysdeps/ia64/memccpy.S +++ b/sysdeps/ia64/memccpy.S @@ -52,6 +52,15 @@ #define loopcnt r30 #define value r31 +#ifdef GAS_ALIGN_BREAKS_UNWIND_INFO +/* Manually force proper loop-alignment. Note: be sure to + double-check the code-layout after making any changes to + this routine! */ +# define ALIGN(n) { nop 0 } +#else +# define ALIGN(n) .align n +#endif + ENTRY(memccpy) .prologue alloc r2 = ar.pfs, 4, 40 - 4, 0, 40 @@ -110,7 +119,7 @@ ENTRY(memccpy) mov ar.ec = MEMLAT + 6 + 1 // six more passes needed ld8 r[1] = [asrc], 8 // r[1] = w0 cmp.ne p6, p0 = r0, r0 ;; // clear p6 - .align 32 + ALIGN(32) .l2: (p[0]) ld8.s r[0] = [asrc], 8 // r[0] = w1 (p[MEMLAT]) shr.u tmp1[0] = r[1 + MEMLAT], sh1 // tmp1 = w0 >> sh1 |