#ifdef CONFIG_CPU_CP15
 
-extern unsigned long cr_no_alignment;  /* defined in entry-armv.S */
 extern unsigned long cr_alignment;     /* defined in entry-armv.S */
 
 static inline unsigned long get_cr(void)
 #else /* ifdef CONFIG_CPU_CP15 */
 
 /*
- * cr_alignment and cr_no_alignment are tightly coupled to cp15 (at least in the
- * minds of the developers). Yielding 0 for machines without a cp15 (and making
- * it read-only) is fine for most cases and saves quite some #ifdeffery.
+ * cr_alignment is tightly coupled to cp15 (at least in the minds of the
+ * developers). Yielding 0 for machines without a cp15 (and making it
+ * read-only) is fine for most cases and saves quite some #ifdeffery.
  */
-#define cr_no_alignment        UL(0)
 #define cr_alignment   UL(0)
 
 static inline unsigned long get_cr(void)
 
        .data
 
        .globl  cr_alignment
-       .globl  cr_no_alignment
 cr_alignment:
        .space  4
-cr_no_alignment:
-       .space  4
 
 #ifdef CONFIG_MULTI_IRQ_HANDLER
        .globl  handle_arch_irq
 
        str     r1, [r5]                        @ Save machine type
        str     r2, [r6]                        @ Save atags pointer
        cmp     r7, #0
-       bicne   r4, r0, #CR_A                   @ Clear 'A' bit
-       stmneia r7, {r0, r4}                    @ Save control register values
+       strne   r0, [r7]                        @ Save control register values
        b       start_kernel
 ENDPROC(__mmap_switched)
 
 
 static unsigned long ai_dword;
 static unsigned long ai_multi;
 static int ai_usermode;
+static unsigned long cr_no_alignment;
 
 core_param(alignment, ai_usermode, int, 0600);
 
                ai_usermode = safe_usermode(ai_usermode, false);
        }
 
+       cr_no_alignment = get_cr() & ~CR_A;
+
        hook_fault_code(FAULT_CODE_ALIGNMENT, do_alignment, SIGBUS, BUS_ADRALN,
                        "alignment exception");
 
 
 #ifdef CONFIG_CPU_CP15_MMU
 unsigned long __init __clear_cr(unsigned long mask)
 {
-       cr_no_alignment = cr_no_alignment & ~mask;
        cr_alignment = cr_alignment & ~mask;
        return cr_alignment;
 }