aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386/elf/start.S
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 /sysdeps/i386/elf/start.S
parent72a2ebb40f61075d4d85e6579ee8d175c2abc74e (diff)
downloadglibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.tar
glibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.tar.gz
glibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.tar.bz2
glibc-a45406396cd255bbd3c417b6ccca6b603ed69e2c.zip
Update.
* sysdeps/i386/elf/start.S (_start): Align stack to 16-byte boundary for SSE/SSE-2 alignment.
Diffstat (limited to 'sysdeps/i386/elf/start.S')
-rw-r--r--sysdeps/i386/elf/start.S13
1 files changed, 7 insertions, 6 deletions
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. */