aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc/include/asm/delay.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2013-10-07 18:10:08 +0530
committerVineet Gupta <vgupta@synopsys.com>2015-06-22 14:06:56 +0530
commit8922bc3058abbe5deaf887147e26531750ce7513 (patch)
tree647f15f01077a23afd047e3d01b125a93e2ac9b1 /arch/arc/include/asm/delay.h
parentARCv2: optimised string/mem lib routines (diff)
downloadlinux-dev-8922bc3058abbe5deaf887147e26531750ce7513.tar.xz
linux-dev-8922bc3058abbe5deaf887147e26531750ce7513.zip
ARCv2: Adhere to Zero Delay loop restriction
Branch insn can't be scheduled as last insn of Zero Overhead loop Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm/delay.h')
-rw-r--r--arch/arc/include/asm/delay.h9
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/arc/include/asm/delay.h b/arch/arc/include/asm/delay.h
index 43de30256981..08e7e2a16ac1 100644
--- a/arch/arc/include/asm/delay.h
+++ b/arch/arc/include/asm/delay.h
@@ -22,11 +22,10 @@
static inline void __delay(unsigned long loops)
{
__asm__ __volatile__(
- "1: sub.f %0, %0, 1 \n"
- " jpnz 1b \n"
- : "+r"(loops)
- :
- : "cc");
+ " lp 1f \n"
+ " nop \n"
+ "1: \n"
+ : "+l"(loops));
}
extern void __bad_udelay(void);