diff --git a/src/compile-x86.S b/src/compile-x86.S
index 6bf13a5bfb..3f839ce3c5 100644
--- a/src/compile-x86.S
+++ b/src/compile-x86.S
@@ -26,9 +26,15 @@
 #define THREAD_STACK 2224
 #define THREAD_SCRATCH 2232
 
+#ifdef AVIAN_USE_FRAME_POINTER
+#  define ALIGNMENT_ADJUSTMENT 0
+#else
+#  define ALIGNMENT_ADJUSTMENT 8
+#endif
+   
 #if defined __MINGW32__ || defined __CYGWIN32__
 
-#define CALLEE_SAVED_REGISTER_FOOTPRINT 64
+#define CALLEE_SAVED_REGISTER_FOOTPRINT 64 + ALIGNMENT_ADJUSTMENT
 
 .globl GLOBAL(vmInvoke)
 GLOBAL(vmInvoke):
@@ -163,7 +169,7 @@ LOCAL(vmJumpAndInvoke_argumentTest):
 
 #else // not __MINGW32__ || __CYGWIN32__
 
-#define CALLEE_SAVED_REGISTER_FOOTPRINT 48
+#define CALLEE_SAVED_REGISTER_FOOTPRINT 48 + ALIGNMENT_ADJUSTMENT
 
 .globl GLOBAL(vmInvoke)
 GLOBAL(vmInvoke):
@@ -296,7 +302,13 @@ LOCAL(vmJumpAndInvoke_argumentTest):
 #define THREAD_STACK 2148
 #define THREAD_SCRATCH 2152
 
-#define CALLEE_SAVED_REGISTER_FOOTPRINT 16
+#ifdef AVIAN_USE_FRAME_POINTER
+#  define ALIGNMENT_ADJUSTMENT 0
+#else
+#  define ALIGNMENT_ADJUSTMENT 12
+#endif
+
+#define CALLEE_SAVED_REGISTER_FOOTPRINT 16 + ALIGNMENT_ADJUSTMENT
 
 .globl GLOBAL(vmInvoke)
 GLOBAL(vmInvoke):