Print this page
6507 i386 makecontext(3c) needs to 16-byte align the stack
@@ -38,17 +38,19 @@
*/
.file "crti.s"
/*
- * Note that when _init and _fini are called we have 16-byte alignment per the
- * ABI. We need to make sure that our asm leaves it such that subsequent calls
- * will be aligned. gcc expects stack alignment before the call instruction is
- * executed. Specifically if we call function foo(), the stack pointer will be
- * 0xc aligned after executing the call instruction and before executing foo's
- * prologue. Note that because 16-byte alignment also ensures 4-byte alignment
- * we will not be breaking compatibility with older applications.
+ * Note that when _init and _fini are called the stack needs to be 16-byte
+ * aligned with a 4-byte bias. See comment in lib/libc/i386/gen/makectxt.c.
+ *
+ * Note: If you change it, you need to change it in the following files as
+ * well:
+ *
+ * - lib/libc/i386/threads/machdep.c
+ * - lib/libc/i386/gen/makectxt.c
+ * - lib/common/i386/crt1.s
*/
/*
* _init function prologue
*/