aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ia64/memmove.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-11-19 06:12:51 +0000
committerUlrich Drepper <drepper@redhat.com>2003-11-19 06:12:51 +0000
commitc9002c1b7a648fe49b8472d6dc6724c78fa1329f (patch)
treeb9a61d0ea66ac08f3bc064d1ddd8823a3e65ebba /sysdeps/ia64/memmove.S
parentad7f28c29d06ddb4506d0d75e089732740b5bd2b (diff)
downloadglibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.zip
glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.gz
glibc-c9002c1b7a648fe49b8472d6dc6724c78fa1329f.tar.bz2
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/memmove.S')
-rw-r--r--sysdeps/ia64/memmove.S15
1 files changed, 12 insertions, 3 deletions
diff --git a/sysdeps/ia64/memmove.S b/sysdeps/ia64/memmove.S
index af0f392..7b8c86b 100644
--- a/sysdeps/ia64/memmove.S
+++ b/sysdeps/ia64/memmove.S
@@ -56,12 +56,18 @@
#define loopcnt r30
#define value r31
+#ifdef GAS_ALIGN_BREAKS_UNWIND_INFO
+# define ALIGN(n) { nop 0 }
+#else
+# define ALIGN(n) .align n
+#endif
+
#define LOOP(shift) \
- .align 32 ; \
+ ALIGN(32); \
.loop##shift##: \
(p[0]) ld8 r[0] = [asrc], 8 ; /* w1 */ \
(p[MEMLAT+1]) st8 [dest] = value, 8 ; \
-(p[MEMLAT]) shrp value = r[MEMLAT], r[MEMLAT+1], shift ; \
+(p[MEMLAT]) shrp value = r[MEMLAT], r[MEMLAT+1], shift ; \
nop.b 0 ; \
nop.b 0 ; \
br.ctop.sptk .loop##shift ; \
@@ -228,6 +234,10 @@ ENTRY(memmove)
(p[MEMLAT]) st1 [dest] = r[MEMLAT], -1
br.ctop.dptk .l6
br.cond.sptk .restore_and_exit
+END(memmove)
+
+ .rodata
+ .align 8
.table:
data8 0 // dummy entry
data8 .loop56 - .loop8
@@ -238,5 +248,4 @@ ENTRY(memmove)
data8 .loop56 - .loop48
data8 .loop56 - .loop56
-END(memmove)
libc_hidden_builtin_def (memmove)