diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S
index 63ab0c591aabc2e280a479423ae7b5728ca38389..3989fa61bc797e34b3a647f8bb76d1b714c8bdbb 100644
--- a/arch/arm/cpu/pxa/start.S
+++ b/arch/arm/cpu/pxa/start.S
@@ -140,7 +140,10 @@ stack_setup:
 #ifdef CONFIG_USE_IRQ
 	sub	r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif /* CONFIG_USE_IRQ */
-	sub	sp, r0, #12		/* leave 3 words for abort-stack    */
+	sub	r0, r0, #12		/* leave 3 words for abort-stack    */
+	bic	sp, r0, #7		/* NOTE: stack MUST be aligned to   */
+					/* 8 bytes in case we want to use   */
+					/* 64bit datatypes (eg. VSPRINTF64) */
 
 clear_bss:
 	ldr	r0, _bss_start		/* find start of bss segment	    */