• Russell King's avatar
    ARM: proc-v7: move CPU errata out of line · 17e7bf86
    Russell King authored
    Rather than having a long sprawling __v7_setup function, which is hard
    to maintain properly, move the CPU errata out of line.
    
    While doing this, it was discovered that the Cortex-A15 errata had been
    incorrectly added:
    
    	ldr	r10, =0x00000c08	@ Cortex-A8 primary part number
    	teq	r0, r10
    	bne	2f
    /* Cortex-A8 errata */
    	b	3f
    2:	ldr	r10, =0x00000c09	@ Cortex-A9 primary part number
    	teq	r0, r10
    	bne	3f
    /* Cortex-A9 errata */
    3:	ldr	r10, =0x00000c0f	@ Cortex-A15 primary part number
    	teq	r0, r10
    	bne	4f
    /* Cortex-A15 errata */
    4:
    
    This results in the Cortex-A15 test always being executed after the
    Cortex-A8 and Cortex-A9 errata, which is obviously not what is intended.
    The 'b 3f' labels should have been updated to 'b 4f'.  The new structure
    of:
    
    	/* Cortex-A8 Errata */
    	ldr	r10, =0x00000c08	@ Cortex-A8 primary part number
    	teq	r0, r10
    	beq	__ca8_errata
    
    	/* Cortex-A9 Errata */
    	ldr	r10, =0x00000c09	@ Cortex-A9 primary part number
    	teq	r0, r10
    	beq	__ca9_errata
    
    	/* Cortex-A15 Errata */
    	ldr	r10, =0x00000c0f	@ Cortex-A15 primary part number
    	teq	r0, r10
    	beq	__ca15_errata
    
    __errata_finish:
    
    is much cleaner and easier to see that this kind of thing doesn't
    happen.
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    17e7bf86
proc-v7.S 18.9 KB