mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 19:30:10 +00:00
Update.
* sysdeps/i386/elf/start.S (_start): Align stack to 16-byte boundary for SSE/SSE-2 alignment.
This commit is contained in:
parent
72a2ebb40f
commit
a45406396c
@ -1,5 +1,8 @@
|
|||||||
2001-02-03 Andreas Jaeger <aj@suse.de>
|
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
|
* posix/Makefile ($(objpfx)annexc.out): Also pass sysincludes to
|
||||||
isomac.
|
isomac.
|
||||||
|
|
||||||
|
@ -22,12 +22,12 @@
|
|||||||
point runs, most registers' values are unspecified, except for:
|
point runs, most registers' values are unspecified, except for:
|
||||||
|
|
||||||
%edx Contains a function pointer to be registered with `atexit'.
|
%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
|
functions called for shared libraries that have been loaded
|
||||||
before this code runs.
|
before this code runs.
|
||||||
|
|
||||||
%esp The stack contains the arguments and environment:
|
%esp The stack contains the arguments and environment:
|
||||||
0(%esp) argc
|
0(%esp) argc
|
||||||
4(%esp) argv[0]
|
4(%esp) argv[0]
|
||||||
...
|
...
|
||||||
(4*argc)(%esp) NULL
|
(4*argc)(%esp) NULL
|
||||||
@ -51,10 +51,11 @@ _start:
|
|||||||
popl %esi /* Pop the argument count. */
|
popl %esi /* Pop the argument count. */
|
||||||
movl %esp, %ecx /* argv starts just at the current stack top.*/
|
movl %esp, %ecx /* argv starts just at the current stack top.*/
|
||||||
|
|
||||||
/* Before pushing the arguments align the stack to a double word
|
/* Before pushing the arguments align the stack to a 16-byte
|
||||||
boundary to avoid penalties from misaligned accesses. Thanks
|
(SSE needs 16-byte alignment) boundary to avoid penalties from
|
||||||
to Edward Seidl <seidl@janed.com> for pointing this out. */
|
misaligned accesses. Thanks to Edward Seidl <seidl@janed.com>
|
||||||
andl $0xfffffff8, %esp
|
for pointing this out. */
|
||||||
|
andl $0xfffffff0, %esp
|
||||||
pushl %eax /* Push garbage because we allocate
|
pushl %eax /* Push garbage because we allocate
|
||||||
28 more bytes. */
|
28 more bytes. */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user