diff options
author | Andreas Jaeger <aj@suse.de> | 2001-02-03 21:32:06 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2001-02-03 21:32:06 +0000 |
commit | a45406396cd255bbd3c417b6ccca6b603ed69e2c (patch) | |
tree | f87ad7fe3b30f148f13806a5a6d6c2e199810265 /sysdeps/i386 | |
parent | 72a2ebb40f61075d4d85e6579ee8d175c2abc74e (diff) | |
download | glibc-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.
Diffstat (limited to 'sysdeps/i386')
-rw-r--r-- | sysdeps/i386/elf/start.S | 13 |
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. */ |