* x86: Unify current.h
@ 2008-05-05 18:48 Christoph Lameter
2008-05-06 12:28 ` Ingo Molnar
0 siblings, 1 reply; 4+ messages in thread
From: Christoph Lameter @ 2008-05-05 18:48 UTC (permalink / raw)
To: Ingo Molnar; +Cc: travis, linux-kernel
There are just two definitions that are shared but the resulting combined
file is resonably small. Putting these two arch headers together shows
that further unifications requires a unification of the per cpu / pda
handling between both arches (zero based or some variation thereof).
Signed-off-by: Christoph Lameter <clameter@sgi.com>
---
include/asm-x86/current.h | 40 ++++++++++++++++++++++++++++++++++++----
include/asm-x86/current_32.h | 17 -----------------
include/asm-x86/current_64.h | 27 ---------------------------
3 files changed, 36 insertions(+), 48 deletions(-)
Index: linux-next/include/asm-x86/current.h
===================================================================
--- linux-next.orig/include/asm-x86/current.h 2008-05-04 22:33:42.299851061 -0700
+++ linux-next/include/asm-x86/current.h 2008-05-05 11:22:16.531407871 -0700
@@ -1,5 +1,37 @@
+#ifndef _X86_CURRENT_H
+#define _X86_CURRENT_H
+
+struct task_struct;
+
#ifdef CONFIG_X86_32
-# include "current_32.h"
-#else
-# include "current_64.h"
-#endif
+#include <linux/compiler.h>
+#include <asm/percpu.h>
+
+DECLARE_PER_CPU(struct task_struct *, current_task);
+static __always_inline struct task_struct *get_current(void)
+{
+ return x86_read_percpu(current_task);
+}
+
+#else /* X86_32 */
+
+#ifndef __ASSEMBLY__
+#include <asm/pda.h>
+
+static __always_inline struct task_struct *get_current(void)
+{
+ return read_pda(pcurrent);
+}
+
+#else /* __ASSEMBLY__ */
+
+#include <asm/asm-offsets.h>
+#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* X86_32 */
+
+#define current get_current()
+
+#endif /* X86_CURRENT_H */
Index: linux-next/include/asm-x86/current_32.h
===================================================================
--- linux-next.orig/include/asm-x86/current_32.h 2008-05-04 22:48:44.689850207 -0700
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,17 +0,0 @@
-#ifndef _I386_CURRENT_H
-#define _I386_CURRENT_H
-
-#include <linux/compiler.h>
-#include <asm/percpu.h>
-
-struct task_struct;
-
-DECLARE_PER_CPU(struct task_struct *, current_task);
-static __always_inline struct task_struct *get_current(void)
-{
- return x86_read_percpu(current_task);
-}
-
-#define current get_current()
-
-#endif /* !(_I386_CURRENT_H) */
Index: linux-next/include/asm-x86/current_64.h
===================================================================
--- linux-next.orig/include/asm-x86/current_64.h 2008-05-04 22:48:44.709851154 -0700
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-#ifndef _X86_64_CURRENT_H
-#define _X86_64_CURRENT_H
-
-#if !defined(__ASSEMBLY__)
-struct task_struct;
-
-#include <asm/pda.h>
-
-static inline struct task_struct *get_current(void)
-{
- struct task_struct *t = read_pda(pcurrent);
- return t;
-}
-
-#define current get_current()
-
-#else
-
-#ifndef ASM_OFFSET_H
-#include <asm/asm-offsets.h>
-#endif
-
-#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
-
-#endif
-
-#endif /* !(_X86_64_CURRENT_H) */
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: x86: Unify current.h
2008-05-05 18:48 x86: Unify current.h Christoph Lameter
@ 2008-05-06 12:28 ` Ingo Molnar
2008-05-06 12:51 ` Ingo Molnar
0 siblings, 1 reply; 4+ messages in thread
From: Ingo Molnar @ 2008-05-06 12:28 UTC (permalink / raw)
To: Christoph Lameter; +Cc: travis, linux-kernel, Thomas Gleixner, H. Peter Anvin
* Christoph Lameter <clameter@sgi.com> wrote:
> There are just two definitions that are shared but the resulting
> combined file is resonably small. Putting these two arch headers
> together shows that further unifications requires a unification of the
> per cpu / pda handling between both arches (zero based or some
> variation thereof).
>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
applied, thanks Christoph.
Ingo
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: x86: Unify current.h
2008-05-06 12:28 ` Ingo Molnar
@ 2008-05-06 12:51 ` Ingo Molnar
2008-05-06 18:00 ` Christoph Lameter
0 siblings, 1 reply; 4+ messages in thread
From: Ingo Molnar @ 2008-05-06 12:51 UTC (permalink / raw)
To: Christoph Lameter; +Cc: travis, linux-kernel, Thomas Gleixner, H. Peter Anvin
* Ingo Molnar <mingo@elte.hu> wrote:
>
> * Christoph Lameter <clameter@sgi.com> wrote:
>
> > There are just two definitions that are shared but the resulting
> > combined file is resonably small. Putting these two arch headers
> > together shows that further unifications requires a unification of the
> > per cpu / pda handling between both arches (zero based or some
> > variation thereof).
> >
> > Signed-off-by: Christoph Lameter <clameter@sgi.com>
>
> applied, thanks Christoph.
x86.git testing found a build failure due to this patch:
include/asm/current.h: Assembler messages:
include/asm/current.h:4: Error: no such instruction: `struct task_struct'
with this config:
http://redhat.com/~mingo/misc/config-Tue_May__6_14_45_51_CEST_2008.bad
i suspect the __ASSEMBLY__ protections in the unified file are not wide
enough?
Ingo
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: x86: Unify current.h
2008-05-06 12:51 ` Ingo Molnar
@ 2008-05-06 18:00 ` Christoph Lameter
0 siblings, 0 replies; 4+ messages in thread
From: Christoph Lameter @ 2008-05-06 18:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: travis, linux-kernel, Thomas Gleixner, H. Peter Anvin
On Tue, 6 May 2008, Ingo Molnar wrote:
> i suspect the __ASSEMBLY__ protections in the unified file are not wide
> enough?
Duh. yes. The x86_64 __ASSEMBLY__ protection is no longer there. We could
move the task_struct def back into the arch specific portion. Sigh.
---
include/asm-x86/current.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
Index: linux-2.6/include/asm-x86/current.h
===================================================================
--- linux-2.6.orig/include/asm-x86/current.h 2008-05-06 10:58:03.000000000 -0700
+++ linux-2.6/include/asm-x86/current.h 2008-05-06 10:58:40.000000000 -0700
@@ -1,12 +1,12 @@
#ifndef _X86_CURRENT_H
#define _X86_CURRENT_H
-struct task_struct;
-
#ifdef CONFIG_X86_32
#include <linux/compiler.h>
#include <asm/percpu.h>
+struct task_struct;
+
DECLARE_PER_CPU(struct task_struct *, current_task);
static __always_inline struct task_struct *get_current(void)
{
@@ -18,6 +18,8 @@ static __always_inline struct task_struc
#ifndef __ASSEMBLY__
#include <asm/pda.h>
+struct task_struct;
+
static __always_inline struct task_struct *get_current(void)
{
return read_pda(pcurrent);
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-05-06 18:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-05 18:48 x86: Unify current.h Christoph Lameter
2008-05-06 12:28 ` Ingo Molnar
2008-05-06 12:51 ` Ingo Molnar
2008-05-06 18:00 ` Christoph Lameter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox