aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/head_8xx.S
diff options
context:
space:
mode:
authorLEROY Christophe <christophe.leroy@c-s.fr>2014-08-29 05:14:38 -0400
committerScott Wood <scottwood@freescale.com>2014-09-04 20:26:54 -0400
commit41cacac63c98803e9fbb054db0b74f92a8c082e4 (patch)
tree0903b975db3d690d7ea2d396a197ab095108e954 /arch/powerpc/kernel/head_8xx.S
parent5bcbe24f6c7aec918b8cb75e53f8f7f897e3a091 (diff)
powerpc/8xx: Optimize verification in FixupDAR
By XORing the upper part of the instruction code, we get a value that can directly be verified with the second test and we can remove the first test. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/kernel/head_8xx.S')
-rw-r--r--arch/powerpc/kernel/head_8xx.S6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 6f544eab983e..1bdd7c13ddc1 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -548,10 +548,8 @@ FixupDAR:/* Entry point for dcbx workaround. */
548/* Check if it really is a dcbx instruction. */ 548/* Check if it really is a dcbx instruction. */
549/* dcbt and dcbtst does not generate DTLB Misses/Errors, 549/* dcbt and dcbtst does not generate DTLB Misses/Errors,
550 * no need to include them here */ 550 * no need to include them here */
551 srwi r10, r11, 26 /* check if major OP code is 31 */ 551 xoris r10, r11, 0x7c00 /* check if major OP code is 31 */
552 cmpwi cr0, r10, 31 552 rlwinm r10, r10, 0, 21, 5
553 bne- 141f
554 rlwinm r10, r11, 0, 21, 30
555 cmpwi cr0, r10, 2028 /* Is dcbz? */ 553 cmpwi cr0, r10, 2028 /* Is dcbz? */
556 beq+ 142f 554 beq+ 142f
557 cmpwi cr0, r10, 940 /* Is dcbi? */ 555 cmpwi cr0, r10, 940 /* Is dcbi? */