summaryrefslogtreecommitdiff
path: root/arch/arm/mm/abort-ev5t.S
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-25 16:59:15 +0300
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-08-25 18:14:42 +0300
commit08446b129bbde34665c423d882f857a45b8c3aed (patch)
tree7278a8a8e379265d9853f41af208bc7e1c738196 /arch/arm/mm/abort-ev5t.S
parent1fb6755f16872ad256c18cce2830f9087502dffd (diff)
downloadlinux-08446b129bbde34665c423d882f857a45b8c3aed.tar.xz
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-ev5t.S')
-rw-r--r--arch/arm/mm/abort-ev5t.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mm/abort-ev5t.S b/arch/arm/mm/abort-ev5t.S
index a0908d4653a3..c913031b79cc 100644
--- a/arch/arm/mm/abort-ev5t.S
+++ b/arch/arm/mm/abort-ev5t.S
@@ -22,7 +22,8 @@ ENTRY(v5t_early_abort)
do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3
ldreq r3, [r4] @ read aborted ARM instruction
bic r1, r1, #1 << 11 @ clear bits 11 of FSR
- do_ldrd_abort tmp=ip, insn=r3
+ teq_ldrd tmp=ip, insn=r3 @ insn was LDRD?
+ beq do_DataAbort @ yes
tst r3, #1 << 20 @ check write
orreq r1, r1, #1 << 11
b do_DataAbort