linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] asm-generic: adapt delay.h to common implementation
@ 2011-07-02  9:59 Jonas Bonn
  2011-07-02  9:59 ` [PATCH 2/2] asm-generic: move archictures to common delay.h Jonas Bonn
  2011-07-02 11:21 ` [PATCH 1/2] asm-generic: adapt delay.h to common implementation Arnd Bergmann
  0 siblings, 2 replies; 7+ messages in thread
From: Jonas Bonn @ 2011-07-02  9:59 UTC (permalink / raw)
  To: linux-kernel, linux-arch; +Cc: hans-christian.egtvedt, lethal, Jonas Bonn


Several architectures are using a common delay.h implementation that
appears to have originated with the x86 architecture.  This common
implementation is a bit fuller than the current asm-generic version
and has some compile-time checks that should be interesting for all
architectures.

This patch takes the common delay.h version and replaces the rather
trivial asm-generic version with it.  As no architecture was actually
using asm-generic/delay.h, this change is rather innocuous; it will,
however, allow us to switch at least four architectures over to using
the asm-generic version.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
---
 include/asm-generic/delay.h |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/include/asm-generic/delay.h b/include/asm-generic/delay.h
index 4586fec..6511b99 100644
--- a/include/asm-generic/delay.h
+++ b/include/asm-generic/delay.h
@@ -1,9 +1,23 @@
 #ifndef __ASM_GENERIC_DELAY_H
 #define __ASM_GENERIC_DELAY_H
 
+/* Undefined functions to get compile-time errors */
+extern void __bad_udelay(void);
+extern void __bad_ndelay(void);
+
 extern void __udelay(unsigned long usecs);
+extern void __ndelay(unsigned long nsecs);
+extern void __const_udelay(unsigned long xloops);
 extern void __delay(unsigned long loops);
 
-#define udelay(n) __udelay(n)
+/* 0x10c7 is 2**32 / 1000000 (rounded up) */
+#define udelay(n) (__builtin_constant_p(n) ? \
+	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
+	__udelay(n))
+
+/* 0x5 is 2**32 / 1000000000 (rounded up) */
+#define ndelay(n) (__builtin_constant_p(n) ? \
+	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
+	__ndelay(n))
 
 #endif /* __ASM_GENERIC_DELAY_H */
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] asm-generic: move archictures to common delay.h
  2011-07-02  9:59 [PATCH 1/2] asm-generic: adapt delay.h to common implementation Jonas Bonn
@ 2011-07-02  9:59 ` Jonas Bonn
  2011-07-02  9:59   ` Jonas Bonn
  2011-07-04 14:18   ` Hans-Christian Egtvedt
  2011-07-02 11:21 ` [PATCH 1/2] asm-generic: adapt delay.h to common implementation Arnd Bergmann
  1 sibling, 2 replies; 7+ messages in thread
From: Jonas Bonn @ 2011-07-02  9:59 UTC (permalink / raw)
  To: linux-kernel, linux-arch; +Cc: hans-christian.egtvedt, lethal, Jonas Bonn


This patch moves the in-tree architectures that were using the 'generic'
delay.h over to using the header file in asm-generic.

This is not done using the generic-y mechanism as none of these arch's
have started using that mechanism yet.  This is a trivial change to make
later when the arch begins using generic-y.

Note the subtle change to the avr32 and SH architectures where the argument
to __const_udelay was previously using the rounded down constant value
instead of the rounded up value.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
---
 arch/avr32/include/asm/delay.h |   27 +--------------------------
 arch/m32r/include/asm/delay.h  |   27 +--------------------------
 arch/sh/include/asm/delay.h    |   27 +--------------------------
 arch/x86/include/asm/delay.h   |   25 +------------------------
 4 files changed, 4 insertions(+), 102 deletions(-)

diff --git a/arch/avr32/include/asm/delay.h b/arch/avr32/include/asm/delay.h
index a0ed9a9..9670e12 100644
--- a/arch/avr32/include/asm/delay.h
+++ b/arch/avr32/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef __ASM_AVR32_DELAY_H
-#define __ASM_AVR32_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/avr32/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* __ASM_AVR32_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/m32r/include/asm/delay.h b/arch/m32r/include/asm/delay.h
index 9dd9e99..9670e12 100644
--- a/arch/m32r/include/asm/delay.h
+++ b/arch/m32r/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef _ASM_M32R_DELAY_H
-#define _ASM_M32R_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/m32r/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* _ASM_M32R_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/sh/include/asm/delay.h b/arch/sh/include/asm/delay.h
index 4b16bf9..9670e12 100644
--- a/arch/sh/include/asm/delay.h
+++ b/arch/sh/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef __ASM_SH_DELAY_H
-#define __ASM_SH_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/sh/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* __ASM_SH_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/x86/include/asm/delay.h b/arch/x86/include/asm/delay.h
index 409a649..9b3b4f2 100644
--- a/arch/x86/include/asm/delay.h
+++ b/arch/x86/include/asm/delay.h
@@ -1,30 +1,7 @@
 #ifndef _ASM_X86_DELAY_H
 #define _ASM_X86_DELAY_H
 
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/x86/lib/delay.c
- */
-
-/* Undefined functions to get compile-time errors */
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-/* 0x10c7 is 2**32 / 1000000 (rounded up) */
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
-	__udelay(n))
-
-/* 0x5 is 2**32 / 1000000000 (rounded up) */
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
+#include <asm-generic/delay.h>
 
 void use_tsc_delay(void);
 
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] asm-generic: move archictures to common delay.h
  2011-07-02  9:59 ` [PATCH 2/2] asm-generic: move archictures to common delay.h Jonas Bonn
@ 2011-07-02  9:59   ` Jonas Bonn
  2011-07-04 14:18   ` Hans-Christian Egtvedt
  1 sibling, 0 replies; 7+ messages in thread
From: Jonas Bonn @ 2011-07-02  9:59 UTC (permalink / raw)
  To: linux-kernel, linux-arch; +Cc: hans-christian.egtvedt, lethal, Jonas Bonn


This patch moves the in-tree architectures that were using the 'generic'
delay.h over to using the header file in asm-generic.

This is not done using the generic-y mechanism as none of these arch's
have started using that mechanism yet.  This is a trivial change to make
later when the arch begins using generic-y.

Note the subtle change to the avr32 and SH architectures where the argument
to __const_udelay was previously using the rounded down constant value
instead of the rounded up value.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
---
 arch/avr32/include/asm/delay.h |   27 +--------------------------
 arch/m32r/include/asm/delay.h  |   27 +--------------------------
 arch/sh/include/asm/delay.h    |   27 +--------------------------
 arch/x86/include/asm/delay.h   |   25 +------------------------
 4 files changed, 4 insertions(+), 102 deletions(-)

diff --git a/arch/avr32/include/asm/delay.h b/arch/avr32/include/asm/delay.h
index a0ed9a9..9670e12 100644
--- a/arch/avr32/include/asm/delay.h
+++ b/arch/avr32/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef __ASM_AVR32_DELAY_H
-#define __ASM_AVR32_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/avr32/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* __ASM_AVR32_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/m32r/include/asm/delay.h b/arch/m32r/include/asm/delay.h
index 9dd9e99..9670e12 100644
--- a/arch/m32r/include/asm/delay.h
+++ b/arch/m32r/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef _ASM_M32R_DELAY_H
-#define _ASM_M32R_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/m32r/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* _ASM_M32R_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/sh/include/asm/delay.h b/arch/sh/include/asm/delay.h
index 4b16bf9..9670e12 100644
--- a/arch/sh/include/asm/delay.h
+++ b/arch/sh/include/asm/delay.h
@@ -1,26 +1 @@
-#ifndef __ASM_SH_DELAY_H
-#define __ASM_SH_DELAY_H
-
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/sh/lib/delay.c
- */
-
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
-	__udelay(n))
-
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
-
-#endif /* __ASM_SH_DELAY_H */
+#include <asm-generic/delay.h>
diff --git a/arch/x86/include/asm/delay.h b/arch/x86/include/asm/delay.h
index 409a649..9b3b4f2 100644
--- a/arch/x86/include/asm/delay.h
+++ b/arch/x86/include/asm/delay.h
@@ -1,30 +1,7 @@
 #ifndef _ASM_X86_DELAY_H
 #define _ASM_X86_DELAY_H
 
-/*
- * Copyright (C) 1993 Linus Torvalds
- *
- * Delay routines calling functions in arch/x86/lib/delay.c
- */
-
-/* Undefined functions to get compile-time errors */
-extern void __bad_udelay(void);
-extern void __bad_ndelay(void);
-
-extern void __udelay(unsigned long usecs);
-extern void __ndelay(unsigned long nsecs);
-extern void __const_udelay(unsigned long xloops);
-extern void __delay(unsigned long loops);
-
-/* 0x10c7 is 2**32 / 1000000 (rounded up) */
-#define udelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
-	__udelay(n))
-
-/* 0x5 is 2**32 / 1000000000 (rounded up) */
-#define ndelay(n) (__builtin_constant_p(n) ? \
-	((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
-	__ndelay(n))
+#include <asm-generic/delay.h>
 
 void use_tsc_delay(void);
 
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] asm-generic: adapt delay.h to common implementation
  2011-07-02  9:59 [PATCH 1/2] asm-generic: adapt delay.h to common implementation Jonas Bonn
  2011-07-02  9:59 ` [PATCH 2/2] asm-generic: move archictures to common delay.h Jonas Bonn
@ 2011-07-02 11:21 ` Arnd Bergmann
  2011-07-02 17:11   ` Jonas Bonn
  1 sibling, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2011-07-02 11:21 UTC (permalink / raw)
  To: Jonas Bonn; +Cc: linux-kernel, linux-arch, hans-christian.egtvedt, lethal

On Saturday 02 July 2011 11:59:13 Jonas Bonn wrote:
> 
> Several architectures are using a common delay.h implementation that
> appears to have originated with the x86 architecture.  This common
> implementation is a bit fuller than the current asm-generic version
> and has some compile-time checks that should be interesting for all
> architectures.
> 
> This patch takes the common delay.h version and replaces the rather
> trivial asm-generic version with it.  As no architecture was actually
> using asm-generic/delay.h, this change is rather innocuous; it will,
> however, allow us to switch at least four architectures over to using
> the asm-generic version.
> 
> Signed-off-by: Jonas Bonn <jonas@southpole.se>

Very nice. Do you want to keep that in your own tree for your convenience,
and merge it along with your architecture, or do you prefer me to
take them into the asm-generic tree?

If you want to add them to your tree, please add my

Acked-by: Arnd Bergmann <arnd@arndb.de>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] asm-generic: adapt delay.h to common implementation
  2011-07-02 11:21 ` [PATCH 1/2] asm-generic: adapt delay.h to common implementation Arnd Bergmann
@ 2011-07-02 17:11   ` Jonas Bonn
  2011-07-02 17:11     ` Jonas Bonn
  0 siblings, 1 reply; 7+ messages in thread
From: Jonas Bonn @ 2011-07-02 17:11 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linux-kernel, linux-arch, hans-christian.egtvedt, lethal


On Sat, 2011-07-02 at 13:21 +0200, Arnd Bergmann wrote:
> Very nice. Do you want to keep that in your own tree for your convenience,
> and merge it along with your architecture, or do you prefer me to
> take them into the asm-generic tree?

I can hang on to them for now.  If the architecture isn't ready for 3.1,
we can move them to your tree then.

> 
> If you want to add them to your tree, please add my
> 
> Acked-by: Arnd Bergmann <arnd@arndb.de>

Done.  Thanks,
Jonas

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] asm-generic: adapt delay.h to common implementation
  2011-07-02 17:11   ` Jonas Bonn
@ 2011-07-02 17:11     ` Jonas Bonn
  0 siblings, 0 replies; 7+ messages in thread
From: Jonas Bonn @ 2011-07-02 17:11 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linux-kernel, linux-arch, hans-christian.egtvedt, lethal


On Sat, 2011-07-02 at 13:21 +0200, Arnd Bergmann wrote:
> Very nice. Do you want to keep that in your own tree for your convenience,
> and merge it along with your architecture, or do you prefer me to
> take them into the asm-generic tree?

I can hang on to them for now.  If the architecture isn't ready for 3.1,
we can move them to your tree then.

> 
> If you want to add them to your tree, please add my
> 
> Acked-by: Arnd Bergmann <arnd@arndb.de>

Done.  Thanks,
Jonas


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] asm-generic: move archictures to common delay.h
  2011-07-02  9:59 ` [PATCH 2/2] asm-generic: move archictures to common delay.h Jonas Bonn
  2011-07-02  9:59   ` Jonas Bonn
@ 2011-07-04 14:18   ` Hans-Christian Egtvedt
  1 sibling, 0 replies; 7+ messages in thread
From: Hans-Christian Egtvedt @ 2011-07-04 14:18 UTC (permalink / raw)
  To: Jonas Bonn; +Cc: linux-kernel, linux-arch, lethal

On Sat, 2011-07-02 at 11:59 +0200, Jonas Bonn wrote:

Hello Jonas,

Please use the latest email address from MAINTAINERS, I will only have
access to my Atmel account for one more week.

> This patch moves the in-tree architectures that were using the 'generic'
> delay.h over to using the header file in asm-generic.
> 
> This is not done using the generic-y mechanism as none of these arch's
> have started using that mechanism yet.  This is a trivial change to make
> later when the arch begins using generic-y.
> 
> Note the subtle change to the avr32 and SH architectures where the argument
> to __const_udelay was previously using the rounded down constant value
> instead of the rounded up value.

My guess is that the AVR32 implementation is copied from x86, hence the
Copyright to Linus. Thanks for cleaning up.

> Signed-off-by: Jonas Bonn <jonas@southpole.se>
>

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

<snipp>

-- 
Hans-Christian Egtvedt

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-07-04 14:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-02  9:59 [PATCH 1/2] asm-generic: adapt delay.h to common implementation Jonas Bonn
2011-07-02  9:59 ` [PATCH 2/2] asm-generic: move archictures to common delay.h Jonas Bonn
2011-07-02  9:59   ` Jonas Bonn
2011-07-04 14:18   ` Hans-Christian Egtvedt
2011-07-02 11:21 ` [PATCH 1/2] asm-generic: adapt delay.h to common implementation Arnd Bergmann
2011-07-02 17:11   ` Jonas Bonn
2011-07-02 17:11     ` Jonas Bonn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).