diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-08-25 14:59:15 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-08-25 16:14:42 +0100 |
commit | 08446b129bbde34665c423d882f857a45b8c3aed (patch) | |
tree | 7278a8a8e379265d9853f41af208bc7e1c738196 /arch/arm/mm/abort-ev6.S | |
parent | 1fb6755f16872ad256c18cce2830f9087502dffd (diff) | |
download | lwn-08446b129bbde34665c423d882f857a45b8c3aed.tar.gz lwn-08446b129bbde34665c423d882f857a45b8c3aed.zip |
ARM: mm: improve do_ldrd_abort macro
Improve the do_ldrd_abort macro code - firstly, it inefficiently checks
for the LDRD encoding by doing a multi-stage test of various bits. This
can be simplified by generating a mask, bitmasking the instruction and
then comparing the result.
Secondly, we want to be able to test the result rather than branching
to do_DataAbort, so remove the branch at the end and rename the macro
to 'teq_ldrd' to reflect it's new usage. teq_ldrd macro returns 'eq'
if the instruction was a LDRD.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/abort-ev6.S')
-rw-r--r-- | arch/arm/mm/abort-ev6.S | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index 8c48c5c22a33..113704f30e9f 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S @@ -34,7 +34,8 @@ ENTRY(v6_early_abort) ldr r3, [r4] @ read aborted ARM instruction ARM_BE8(rev r3, r3) - do_ldrd_abort tmp=ip, insn=r3 + teq_ldrd tmp=ip, insn=r3 @ insn was LDRD? + beq do_DataAbort @ yes tst r3, #1 << 20 @ L = 0 -> write orreq r1, r1, #1 << 11 @ yes. #endif |