diff --git a/lisp/ppc-assem.S b/lisp/ppc-assem.S
index e531a1a0c1e6f6f0d1b8b6f7c23971ddc472bae4..f5cb68bd915817e443e72cd9669e759b72a9a983 100644
--- a/lisp/ppc-assem.S
+++ b/lisp/ppc-assem.S
@@ -58,7 +58,8 @@ x:
 (NFPR_SAVE_BYTES(first_f)+ NGPR_SAVE_BYTES(first_g)+ FRAME_ARG_BYTES(out_arg_words))
 #define SAVE_FPR(n) stfd f/**/n,-8*(32- n)(r11)
 #define SAVE_GPR(n) stw r/**/n,-4*(32- n)(r11)
-#define FULL_FRAME_SIZE FRAME_SIZE(FIRST_SAVE_GPR,FIRST_SAVE_FPR,8,1)
+/* Make sure FULL_FRAME_SIZE is on a 16-byte boundary */
+#define FULL_FRAME_SIZE ((FRAME_SIZE(FIRST_SAVE_GPR,FIRST_SAVE_FPR,8,1) + 15) & ~15)
 #else
 #define FRAME_SIZE(first_g,first_f,out_arg_words,savecr) \
 (NFPR_SAVE_BYTES(first_f)+ NGPR_SAVE_BYTES(first_g)+ FRAME_ARG_BYTES(out_arg_words+savecr))