linux/arch/mips/lib
Maciej W. Rozycki 2db4bc3418 MIPS: __delay CPU_DADDI_WORKAROUNDS bug fix
With CPU_DADDI_WORKAROUNDS enabled __delay assembles with a macro in a
branch delay slot:

{standard input}: Assembler messages:
{standard input}:18: Warning: Macro instruction expanded into multiple
instructions in a branch delay slot

and broken code results:

0000000000000000 <__delay>:
   0:	1480ffff 	bnez	a0,0 <__delay>
   4:	24010001 	li	at,1
   8:	0081202f 	dsubu	a0,a0,at
   c:	03e00008 	jr	ra
  10:	00000000 	nop
  14:	00000000 	nop

Consequently the function loops indefinitely, showing up prominently as a
hang in the delay loop calibration at bootstrap.

This change corrects the problem by forcing the immediate 1 into a
register while keeping code produced identical where CPU_DADDI_WORKAROUNDS
is disabled.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6669/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-05-13 00:29:36 +02:00
..
ashldi3.c
ashrdi3.c
bitops.c
cmpdi2.c
csum_partial.S MIPS: lib: csum_partial: Add EVA support 2014-03-26 23:09:17 +01:00
delay.c MIPS: __delay CPU_DADDI_WORKAROUNDS bug fix 2014-05-13 00:29:36 +02:00
dump_tlb.c
iomap-pci.c
iomap.c
libgcc.h
lshrdi3.c
Makefile
memcpy.S MIPS: lib: memcpy: Add EVA support 2014-03-26 23:09:14 +01:00
memset.S MIPS: lib: memset: Add EVA support for the __bzero function. 2014-03-26 23:09:15 +01:00
mips-atomic.c
r3k_dump_tlb.c
strlen_user.S MIPS: lib: strlen_user: Add EVA support 2014-03-26 23:09:13 +01:00
strncpy_user.S MIPS: lib: strncpy_user: Add EVA support 2014-03-26 23:09:14 +01:00
strnlen_user.S
ucmpdi2.c
uncached.c