This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: newlib on x86-64


Attached is a patch for memcpy.S.  memset.S and setjmp.S don't use the
red zone.  I think that is actually all of the x86-64 assembly.  Am I
missing something?

Neal

2009-02-04  Neal H. Walfield  <neal@gnu.org>

	* libc/machine/x86_64/memcpy.S (memcpy): Don't use the red zone.

diff -c newlib/libc/machine/x86_64/memcpy.S\~ newlib/libc/machine/x86_64/memcpy.S
--- newlib/libc/machine/x86_64/memcpy.S~	2007-08-28 23:56:49.000000000 +0200
+++ newlib/libc/machine/x86_64/memcpy.S	2009-02-04 05:07:51.000000000 +0100
@@ -30,10 +30,10 @@
   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 @@
   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
 
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]