Patchwork [1/1] sparc32: convert to asm-generic/hardirq.h

login
register
mail settings
Submitter Andrew Morton
Date Sept. 18, 2009, 7:59 p.m.
Message ID <200909181959.n8IJx3qh005792@imap1.linux-foundation.org>
Download mbox | patch
Permalink /patch/33887/
State Superseded
Delegated to: David Miller
Headers show

Comments

Andrew Morton - Sept. 18, 2009, 7:59 p.m.
From: Christoph Hellwig <hch@lst.de>

Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/sparc/include/asm/hardirq_32.h |   12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)
David Miller - Sept. 25, 2009, 9:07 p.m.
From: akpm@linux-foundation.org

Date: Fri, 18 Sep 2009 12:59:03 -0700

> From: Christoph Hellwig <hch@lst.de>

> 

> Signed-off-by: Christoph Hellwig <hch@lst.de>

> Cc: "David S. Miller" <davem@davemloft.net>

> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>


I had this in my tree but it breaks the build, so please toss
this from your queue.  Thanks.

In file included from include/asm-generic/hardirq.h:6,
                 from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/hardirq_32.h:11,
                 from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:10,
                 from include/linux/interrupt.h:12,
                 from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/irq_32.h:9,
                 from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/irq.h:6,
                 from include/linux/irqnr.h:10,
                 from include/linux/random.h:12,
                 from include/linux/stackprotector.h:6,
                 from init/main.c:17:
include/linux/irq.h:216: error: ‘NR_IRQS’ undeclared here (not in a function)
Andrew Morton - Sept. 25, 2009, 9:15 p.m.
On Fri, 25 Sep 2009 14:07:21 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:

> From: akpm@linux-foundation.org
> Date: Fri, 18 Sep 2009 12:59:03 -0700
> 
> > From: Christoph Hellwig <hch@lst.de>
> > 
> > Signed-off-by: Christoph Hellwig <hch@lst.de>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> 
> I had this in my tree but it breaks the build, so please toss
> this from your queue.  Thanks.
> 
> In file included from include/asm-generic/hardirq.h:6,
>                  from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/hardirq_32.h:11,
>                  from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/hardirq.h:6,
>                  from include/linux/hardirq.h:10,
>                  from include/linux/interrupt.h:12,
>                  from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/irq_32.h:9,
>                  from /home/davem/src/GIT/sparc-2.6/arch/sparc/include/asm/irq.h:6,
>                  from include/linux/irqnr.h:10,
>                  from include/linux/random.h:12,
>                  from include/linux/stackprotector.h:6,
>                  from init/main.c:17:
> include/linux/irq.h:216: error: ___NR_IRQS___ undeclared here (not in a function)

hm, I tried to fix this but my sparc32 cross-compiler broke.

ARCH=sparc:

scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems

  /opt/crosstool/gcc-4.1.0-glibc-2.3.6/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gcc -Wp,-MD,scripts/mod/.empty.o.d  -nostdinc -isystem /opt/crosstool/gcc-4.1.0-glibc-2.3.6/sparc-unknown-linux-gnu/lib/gcc/sparc-unknown-linux-gnu/4.1.0/include -Iinclude  -I/usr/src/devel/arch/sparc/include -include include/linux/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs -pg -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(empty)"  -D"KBUILD_MODNAME=KBUILD_STR(empty)" -D"DEBUG_HASH=43" -D"DEBUG_HASH2=50" -c -o scripts/mod/.tmp_empty.o scripts/mod/empty.c

How'd that -m64 get in there?

I haven't tested sparc32 in some time so perhaps I've forgotten the magic sauce.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Sept. 25, 2009, 9:18 p.m.
From: Andrew Morton <akpm@linux-foundation.org>
Date: Fri, 25 Sep 2009 14:15:38 -0700

> hm, I tried to fix this but my sparc32 cross-compiler broke.
> 
> ARCH=sparc:
> 
> scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
> scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
> scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems
 ...
> How'd that -m64 get in there?

That's really odd.

Sam, any idea?
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Sept. 25, 2009, 9:26 p.m.
On Fri, Sep 25, 2009 at 02:18:25PM -0700, David Miller wrote:
> From: Andrew Morton <akpm@linux-foundation.org>
> Date: Fri, 25 Sep 2009 14:15:38 -0700
> 
> > hm, I tried to fix this but my sparc32 cross-compiler broke.
> > 
> > ARCH=sparc:
> > 
> > scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
> > scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
> > scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems
>  ...
> > How'd that -m64 get in there?
> 
> That's really odd.
> 
> Sam, any idea?

It happens if you try to build sparc with a sparc64 config.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Morton - Sept. 25, 2009, 9:36 p.m.
On Fri, 25 Sep 2009 23:26:50 +0200
Sam Ravnborg <sam@ravnborg.org> wrote:

> On Fri, Sep 25, 2009 at 02:18:25PM -0700, David Miller wrote:
> > From: Andrew Morton <akpm@linux-foundation.org>
> > Date: Fri, 25 Sep 2009 14:15:38 -0700
> > 
> > > hm, I tried to fix this but my sparc32 cross-compiler broke.
> > > 
> > > ARCH=sparc:
> > > 
> > > scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
> > > scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
> > > scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems
> >  ...
> > > How'd that -m64 get in there?
> > 
> > That's really odd.
> > 
> > Sam, any idea?
> 
> It happens if you try to build sparc with a sparc64 config.
> 

setenv ARCH sparc
make mrproper
make allmodconfig
make init/main.o

scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems

akpm:/usr/src/25> grep SPARC .config 
CONFIG_SPARC=y
# CONFIG_SPARC32 is not set
CONFIG_SPARC64=y
CONFIG_SPARC64_SMP=y
CONFIG_SPARC64_PAGE_SIZE_8KB=y
# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
CONFIG_SPARC64_PCI=y
CONFIG_INPUT_SPARCSPKR=m
CONFIG_SND_SPARC=y
# Misc Linux/SPARC drivers

wtf?  How'd sparc64 get set?

Maybe I'm supposed to use ARCH=sparc32 now?  ARCH=sparc used to work.

akpm:/usr/src/25> setenv ARCH sparc32
akpm:/usr/src/25> make mrproper
Makefile:213: *** ARCH changed from "sparc" to "sparc32". Use "make mrproper" to fix it up.  Stop.

lol.

akpm:/usr/src/25> setenv ARCH i386
akpm:/usr/src/25> make mrproper
Makefile:213: *** ARCH changed from "sparc" to "i386". Use "make mrproper" to fix it up.  Stop.

help.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Morton - Sept. 25, 2009, 9:40 p.m.
On Fri, 25 Sep 2009 14:36:23 -0700
Andrew Morton <akpm@linux-foundation.org> wrote:

> akpm:/usr/src/25> grep SPARC .config 
> CONFIG_SPARC=y
> # CONFIG_SPARC32 is not set
> CONFIG_SPARC64=y
> CONFIG_SPARC64_SMP=y
> CONFIG_SPARC64_PAGE_SIZE_8KB=y
> # CONFIG_SPARC64_PAGE_SIZE_64KB is not set
> CONFIG_SPARC64_PCI=y
> CONFIG_INPUT_SPARCSPKR=m
> CONFIG_SND_SPARC=y
> # Misc Linux/SPARC drivers
> 
> wtf?  How'd sparc64 get set?

hm, OK, allmodconfig sets SPARC64.  That seems wrong.

allnoconfig does not set SPARC64:

akpm:/usr/src/25> make allnoconfig
scripts/kconfig/conf -n arch/sparc/Kconfig
#
# configuration written to .config
#
akpm:/usr/src/25> grep SPARC .config 
CONFIG_SPARC=y
CONFIG_SPARC32=y
# CONFIG_SPARC64 is not set
# CONFIG_SPARC_LED is not set
# CONFIG_SPARC_LEON is not set
# Misc Linux/SPARC drivers


But with that config, init/main.o compiles OK.

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Morton - Sept. 25, 2009, 9:42 p.m.
On Fri, 25 Sep 2009 14:36:23 -0700
Andrew Morton <akpm@linux-foundation.org> wrote:

> akpm:/usr/src/25> setenv ARCH sparc32
> akpm:/usr/src/25> make mrproper
> Makefile:213: *** ARCH changed from "sparc" to "sparc32". Use "make mrproper" to fix it up.  Stop.

OK, I think this is just breakage in today's linux-next.

After doing an x86_64 build I did:

akpm2:/usr/src/25> setenv ARCH i386
akpm2:/usr/src/25> make mrproper
Makefile:200: *** CROSS_COMPILE changed from "/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-" to to "/opt/crosstool/gcc-4.1.0-glibc-2.3.6/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-". Use "make mrproper" to fix it up.  Stop.
**FAILED**

Manually removing include/generated/* fixes this up.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Sept. 25, 2009, 9:45 p.m.
On Fri, Sep 25, 2009 at 02:36:23PM -0700, Andrew Morton wrote:
> On Fri, 25 Sep 2009 23:26:50 +0200
> Sam Ravnborg <sam@ravnborg.org> wrote:
> 
> > On Fri, Sep 25, 2009 at 02:18:25PM -0700, David Miller wrote:
> > > From: Andrew Morton <akpm@linux-foundation.org>
> > > Date: Fri, 25 Sep 2009 14:15:38 -0700
> > > 
> > > > hm, I tried to fix this but my sparc32 cross-compiler broke.
> > > > 
> > > > ARCH=sparc:
> > > > 
> > > > scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
> > > > scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
> > > > scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems
> > >  ...
> > > > How'd that -m64 get in there?
> > > 
> > > That's really odd.
> > > 
> > > Sam, any idea?
> > 
> > It happens if you try to build sparc with a sparc64 config.
> > 
> 
> setenv ARCH sparc
> make mrproper
> make allmodconfig
> make init/main.o
> 
> scripts/mod/empty.c:1: error: -m64 is not supported by this configuration
> scripts/mod/empty.c:1: error: -mlong-double-64 not allowed with -m64
> scripts/mod/empty.c:1: error: -mcmodel= is not supported on 32 bit systems
> 
> akpm:/usr/src/25> grep SPARC .config 
> CONFIG_SPARC=y
> # CONFIG_SPARC32 is not set
> CONFIG_SPARC64=y
> CONFIG_SPARC64_SMP=y
> CONFIG_SPARC64_PAGE_SIZE_8KB=y
> # CONFIG_SPARC64_PAGE_SIZE_64KB is not set
> CONFIG_SPARC64_PCI=y
> CONFIG_INPUT_SPARCSPKR=m
> CONFIG_SND_SPARC=y
> # Misc Linux/SPARC drivers
> 
> wtf?  How'd sparc64 get set?

One of the open issues after merging sparc and sparc64.
I have never got around to find a proper solution so
we adjust the config based on the ARCH= setting.
So allmodconfig + allyesconfig will always be sparc64.
And allnoconfig will always be sparc.

Davem has rightfully complained about this before.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Sept. 25, 2009, 9:50 p.m.
On Fri, Sep 25, 2009 at 02:42:14PM -0700, Andrew Morton wrote:
> On Fri, 25 Sep 2009 14:36:23 -0700
> Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > akpm:/usr/src/25> setenv ARCH sparc32
> > akpm:/usr/src/25> make mrproper
> > Makefile:213: *** ARCH changed from "sparc" to "sparc32". Use "make mrproper" to fix it up.  Stop.
> 
> OK, I think this is just breakage in today's linux-next.
> 
> After doing an x86_64 build I did:
> 
> akpm2:/usr/src/25> setenv ARCH i386
> akpm2:/usr/src/25> make mrproper
> Makefile:200: *** CROSS_COMPILE changed from "/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-" to to "/opt/crosstool/gcc-4.1.0-glibc-2.3.6/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-". Use "make mrproper" to fix it up.  Stop.
> **FAILED**
> 
> Manually removing include/generated/* fixes this up.

Never used this combination in my testing - but it looks like something
that many people will hit :-(
kbuild checks for inconsistent ARCH/CROSS_COMPILE settings
_before_ we do the mrproper thing.

I need to look at this a bit to come up with a proper
solution. 

Thanks for reporting.

	Sam

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Morton - Sept. 25, 2009, 9:56 p.m.
On Fri, 25 Sep 2009 23:50:11 +0200
Sam Ravnborg <sam@ravnborg.org> wrote:

> On Fri, Sep 25, 2009 at 02:42:14PM -0700, Andrew Morton wrote:
> > On Fri, 25 Sep 2009 14:36:23 -0700
> > Andrew Morton <akpm@linux-foundation.org> wrote:
> > 
> > > akpm:/usr/src/25> setenv ARCH sparc32
> > > akpm:/usr/src/25> make mrproper
> > > Makefile:213: *** ARCH changed from "sparc" to "sparc32". Use "make mrproper" to fix it up.  Stop.
> > 
> > OK, I think this is just breakage in today's linux-next.
> > 
> > After doing an x86_64 build I did:
> > 
> > akpm2:/usr/src/25> setenv ARCH i386
> > akpm2:/usr/src/25> make mrproper
> > Makefile:200: *** CROSS_COMPILE changed from "/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-" to to "/opt/crosstool/gcc-4.1.0-glibc-2.3.6/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-". Use "make mrproper" to fix it up.  Stop.
> > **FAILED**
> > 
> > Manually removing include/generated/* fixes this up.
> 
> Never used this combination in my testing - but it looks like something
> that many people will hit :-(
> kbuild checks for inconsistent ARCH/CROSS_COMPILE settings
> _before_ we do the mrproper thing.
> 
> I need to look at this a bit to come up with a proper
> solution. 
> 
> Thanks for reporting.
> 

OK, thanks.

Dave, could you please send along the config which broke Christoph's
patch?  It works OK with allnoconfig and defconfig for me.

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Sept. 25, 2009, 9:59 p.m.
From: Andrew Morton <akpm@linux-foundation.org>
Date: Fri, 25 Sep 2009 14:56:18 -0700

> Dave, could you please send along the config which broke Christoph's
> patch?  It works OK with allnoconfig and defconfig for me.

arch/sparc/configs/sparc32_defconfig

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff -puN arch/sparc/include/asm/hardirq_32.h~sparc32-convert-to-asm-generic-hardirqh arch/sparc/include/asm/hardirq_32.h
--- a/arch/sparc/include/asm/hardirq_32.h~sparc32-convert-to-asm-generic-hardirqh
+++ a/arch/sparc/include/asm/hardirq_32.h
@@ -7,17 +7,7 @@ 
 #ifndef __SPARC_HARDIRQ_H
 #define __SPARC_HARDIRQ_H
 
-#include <linux/threads.h>
-#include <linux/spinlock.h>
-#include <linux/cache.h>
-
-/* entry.S is sensitive to the offsets of these fields */ /* XXX P3 Is it? */
-typedef struct {
-	unsigned int __softirq_pending;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h>	/* Standard mappings for irq_cpustat_t above */
-
 #define HARDIRQ_BITS    8
+#include <asm-generic/hardirq.h>
 
 #endif /* __SPARC_HARDIRQ_H */