Skip to content

Commit

Permalink
MIPS: Make __{,n,u}delay declarations match definitions and generic d…
Browse files Browse the repository at this point in the history
…elay.h

At some recent point arch/mips/include/asm/delay.h has started being
included into csrc-octeon.c where the __?delay() functions are defined.
This causes a compile failure due to conflicting declarations and
definitions of the functions.

It turns out that the generic definitions in arch/mips/lib/delay.c also
conflict.

Proposed fix: Declare the functions to take unsigned long parameters
just like asm-generic (and x86) does.  Update __delay to agree
(__ndelay and __udelay need no change).

Bonus: Get rid of 'inline' from __delay() definition, as it is globally
visible, and the compiler should be making this decision itself (it does
in fact inline the function without being told to).

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/4354/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
David Daney authored and Ralf Baechle committed Oct 16, 2012
1 parent ddffeb8 commit 5210edc
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
6 changes: 3 additions & 3 deletions arch/mips/include/asm/delay.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

#include <linux/param.h>

extern void __delay(unsigned int loops);
extern void __ndelay(unsigned int ns);
extern void __udelay(unsigned int us);
extern void __delay(unsigned long loops);
extern void __ndelay(unsigned long ns);
extern void __udelay(unsigned long us);

#define ndelay(ns) __ndelay(ns)
#define udelay(us) __udelay(us)
Expand Down
6 changes: 5 additions & 1 deletion arch/mips/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@
#include <asm/compiler.h>
#include <asm/war.h>

inline void __delay(unsigned int loops)
void __delay(unsigned long loops)
{
__asm__ __volatile__ (
" .set noreorder \n"
" .align 3 \n"
"1: bnez %0, 1b \n"
#if __SIZEOF_LONG__ == 4
" subu %0, 1 \n"
#else
" dsubu %0, 1 \n"
#endif
" .set reorder \n"
: "=r" (loops)
: "0" (loops));
Expand Down

0 comments on commit 5210edc

Please sign in to comment.