#endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
 #endif /* CONFIG_PRELOADER */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #CONFIG_SYS_MALLOC_LEN  /* malloc area                      */
        sub     r0, r0, #CONFIG_SYS_GBL_DATA_SIZE /* bdinfo                        */
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
 #endif
 #endif /* CONFIG_PRELOADER */
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
-       bic     sp, r0, #7              /* 8-byte align stack for ABI compliance */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             @ leave 3 words for abort-stack
-       and     sp, sp, #~7             @ 8 byte alinged for (ldr/str)d
+       bic     sp, sp, #7              @ 8-byte alignment for ABI compliance
 
        /* Clear BSS (if any). Is below tx (watch load addr - need space) */
 clear_bss:
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
 #ifdef CONFIG_USE_IRQ
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif /* CONFIG_USE_IRQ */
-       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) */
+       sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
        ldr     pc, _start_armboot
 
 
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, sp, #7              /* 8-byte alignment for ABI compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */