diff options
author | LEROY Christophe <christophe.leroy@c-s.fr> | 2014-08-29 05:14:38 -0400 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-09-04 20:26:54 -0400 |
commit | 41cacac63c98803e9fbb054db0b74f92a8c082e4 (patch) | |
tree | 0903b975db3d690d7ea2d396a197ab095108e954 /arch/powerpc/kernel/head_8xx.S | |
parent | 5bcbe24f6c7aec918b8cb75e53f8f7f897e3a091 (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.S | 6 |
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? */ |