Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog4
-rw-r--r--newlib/libc/machine/x86_64/memcpy.S16
2 files changed, 12 insertions, 8 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 965f986e5..d1199f7ba 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,7 @@
+2009-02-05 Neal H. Walfield <neal@gnu.org>
+
+ * libc/machine/x86_64/memcpy.S (memcpy): Don't use the red zone.
+
2009-01-28 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdio/vfscanf.c (__SVFSCANF_R): Add additional check for
diff --git a/newlib/libc/machine/x86_64/memcpy.S b/newlib/libc/machine/x86_64/memcpy.S
index 3178dfae2..81dd0c423 100644
--- a/newlib/libc/machine/x86_64/memcpy.S
+++ b/newlib/libc/machine/x86_64/memcpy.S
@@ -30,10 +30,10 @@ quadword_aligned:
cmpq $256, rdx
jb quadword_copy
- movq rax, -8 (rsp)
- movq r12, -16 (rsp)
- movq r13, -24 (rsp)
- movq r14, -32 (rsp)
+ pushq rax
+ pushq r12
+ pushq r13
+ pushq r14
movq rdx, rcx /* Copy 128 bytes at a time with minimum cache polution */
shrq $7, rcx
@@ -89,10 +89,10 @@ loop:
movq rdx, rcx
andq $127, rcx
rep movsb
- movq -8 (rsp), rax
- movq -16 (rsp), r12
- movq -24 (rsp), r13
- movq -32 (rsp), r14
+ popq r14
+ popq r13
+ popq r12
+ popq rax
ret