about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2001-02-03 21:32:06 +0000
committerAndreas Jaeger <aj@suse.de>2001-02-03 21:32:06 +0000
commita45406396cd255bbd3c417b6ccca6b603ed69e2c (patch)
treef87ad7fe3b30f148f13806a5a6d6c2e199810265
parent72a2ebb40f61075d4d85e6579ee8d175c2abc74e (diff)
downloadglibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.tar.gz
glibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.tar.xz
glibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.zip
Update.
	* sysdeps/i386/elf/start.S (_start): Align stack to 16-byte
	boundary for SSE/SSE-2 alignment.
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/i386/elf/start.S13
2 files changed, 10 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 110a5ca281..e289571ba3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2001-02-03  Andreas Jaeger  <aj@suse.de>
 
+	* sysdeps/i386/elf/start.S (_start): Align stack to 16-byte
+	boundary for SSE/SSE-2 alignment.
+
 	* posix/Makefile ($(objpfx)annexc.out): Also pass sysincludes to
 	isomac.
 
diff --git a/sysdeps/i386/elf/start.S b/sysdeps/i386/elf/start.S
index 868323b1b9..fb54066cc3 100644
--- a/sysdeps/i386/elf/start.S
+++ b/sysdeps/i386/elf/start.S
@@ -22,12 +22,12 @@
    point runs, most registers' values are unspecified, except for:
 
    %edx		Contains a function pointer to be registered with `atexit'.
-   		This is how the dynamic linker arranges to have DT_FINI
+		This is how the dynamic linker arranges to have DT_FINI
 		functions called for shared libraries that have been loaded
 		before this code runs.
 
    %esp		The stack contains the arguments and environment:
-   		0(%esp)			argc
+		0(%esp)			argc
 		4(%esp)			argv[0]
 		...
 		(4*argc)(%esp)		NULL
@@ -51,10 +51,11 @@ _start:
 	popl %esi		/* Pop the argument count.  */
 	movl %esp, %ecx		/* argv starts just at the current stack top.*/
 
-	/* Before pushing the arguments align the stack to a double word
-	   boundary to avoid penalties from misaligned accesses.  Thanks
-	   to Edward Seidl <seidl@janed.com> for pointing this out.  */
-	andl $0xfffffff8, %esp
+	/* Before pushing the arguments align the stack to a 16-byte
+	(SSE needs 16-byte alignment) boundary to avoid penalties from
+	misaligned accesses.  Thanks to Edward Seidl <seidl@janed.com>
+	for pointing this out.  */
+	andl $0xfffffff0, %esp
 	pushl %eax		/* Push garbage because we allocate
 				   28 more bytes.  */