projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5515daa
)
xtensa: fix __delay for small loop count
author
Max Filippov
<jcmvbkbc@gmail.com>
Wed, 16 Oct 2013 22:42:16 +0000
(
02:42
+0400)
committer
Chris Zankel
<chris@zankel.net>
Tue, 14 Jan 2014 18:19:53 +0000
(10:19 -0800)
Avoid __delay counter underflow for loop counts < 2.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
arch/xtensa/include/asm/delay.h
patch
|
blob
|
history
diff --git
a/arch/xtensa/include/asm/delay.h
b/arch/xtensa/include/asm/delay.h
index
3899610
..
742b89f
100644
(file)
--- a/
arch/xtensa/include/asm/delay.h
+++ b/
arch/xtensa/include/asm/delay.h
@@
-19,9
+19,12
@@
extern unsigned long loops_per_jiffy;
static inline void __delay(unsigned long loops)
{
- /* 2 cycles per loop. */
- __asm__ __volatile__ ("1: addi %0, %0, -2; bgeui %0, 2, 1b"
- : "=r" (loops) : "0" (loops));
+ if (__builtin_constant_p(loops) && loops < 2)
+ __asm__ __volatile__ ("nop");
+ else if (loops >= 2)
+ /* 2 cycles per loop. */
+ __asm__ __volatile__ ("1: addi %0, %0, -2; bgeui %0, 2, 1b"
+ : "+r" (loops));
}
/* For SMP/NUMA systems, change boot_cpu_data to something like