sparc: prepare kernel/ for unification
Sam Ravnborg [Wed, 3 Dec 2008 11:08:37 +0000 (03:08 -0800)]
o sparc32 files with identical names to sparc64 renamed to <name>_32.S
o introduced a few Kconfig helpers to simplify Makefile logic
o refactored Makefile to prepare for unification
  - use obj-$(CONFIG_SPARC32) for sparc32 specific files
  - use <name>_$(BITS) for files where sparc64 has a _64 variant
  - sparc64 directly include a few files where sparc32 builds them,
    refer to these files directly (no BITS)
  - sneaked in -Werror as used by sparc64
o modified sparc/Makefile to use the new names for head/init_task

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

28 files changed:
arch/sparc/Kconfig
arch/sparc/Makefile
arch/sparc/kernel/Makefile
arch/sparc/kernel/auxio_32.c [moved from arch/sparc/kernel/auxio.c with 100% similarity]
arch/sparc/kernel/cpu_32.c [moved from arch/sparc/kernel/cpu.c with 100% similarity]
arch/sparc/kernel/etrap_32.S [moved from arch/sparc/kernel/etrap.S with 100% similarity]
arch/sparc/kernel/head_32.S [moved from arch/sparc/kernel/head.S with 100% similarity]
arch/sparc/kernel/idprom_32.c [moved from arch/sparc/kernel/idprom.c with 100% similarity]
arch/sparc/kernel/init_task_32.c [moved from arch/sparc/kernel/init_task.c with 100% similarity]
arch/sparc/kernel/irq_32.c [moved from arch/sparc/kernel/irq.c with 100% similarity]
arch/sparc/kernel/kgdb_32.c [moved from arch/sparc/kernel/kgdb.c with 100% similarity]
arch/sparc/kernel/module_32.c [moved from arch/sparc/kernel/module.c with 100% similarity]
arch/sparc/kernel/of_device_32.c [moved from arch/sparc/kernel/of_device.c with 100% similarity]
arch/sparc/kernel/process_32.c [moved from arch/sparc/kernel/process.c with 100% similarity]
arch/sparc/kernel/prom_32.c [moved from arch/sparc/kernel/prom.c with 100% similarity]
arch/sparc/kernel/ptrace_32.c [moved from arch/sparc/kernel/ptrace.c with 100% similarity]
arch/sparc/kernel/rtrap_32.S [moved from arch/sparc/kernel/rtrap.S with 100% similarity]
arch/sparc/kernel/setup_32.c [moved from arch/sparc/kernel/setup.c with 100% similarity]
arch/sparc/kernel/signal_32.c [moved from arch/sparc/kernel/signal.c with 100% similarity]
arch/sparc/kernel/smp_32.c [moved from arch/sparc/kernel/smp.c with 100% similarity]
arch/sparc/kernel/sparc_ksyms_32.c [moved from arch/sparc/kernel/sparc_ksyms.c with 100% similarity]
arch/sparc/kernel/sys_sparc_32.c [moved from arch/sparc/kernel/sys_sparc.c with 100% similarity]
arch/sparc/kernel/systbls_32.S [moved from arch/sparc/kernel/systbls.S with 100% similarity]
arch/sparc/kernel/time_32.c [moved from arch/sparc/kernel/time.c with 100% similarity]
arch/sparc/kernel/trampoline_32.S [moved from arch/sparc/kernel/trampoline.S with 100% similarity]
arch/sparc/kernel/traps_32.c [moved from arch/sparc/kernel/traps.c with 100% similarity]
arch/sparc/kernel/una_asm_32.S [moved from arch/sparc/kernel/una_asm.S with 100% similarity]
arch/sparc/kernel/unaligned_32.c [moved from arch/sparc/kernel/unaligned.c with 100% similarity]

index 26ddeed..7cfe557 100644 (file)
@@ -198,6 +198,17 @@ config EMULATED_CMPXCHG
          Sparc32 does not have a CAS instruction like sparc64. cmpxchg()
          is emulated, and therefore it is not completely atomic.
 
+# Makefile helpers
+config SPARC32_SMP
+       bool
+       default y
+       depends on SPARC32 && SMP
+
+config SPARC64_SMP
+       bool
+       default y
+       depends on SPARC64 && SMP
+
 choice
        prompt "Kernel page size" if SPARC64
        default SPARC64_PAGE_SIZE_8KB
@@ -505,6 +516,16 @@ config SUN_OPENPROMFS
          Only choose N if you know in advance that you will not need to modify
          OpenPROM settings on the running system.
 
+# Makefile helpers
+config SPARC32_PCI
+       bool
+       default y
+       depends on SPARC32 && PCI
+
+config SPARC64_PCI
+       bool
+       default y
+       depends on SPARC64 && PCI
 
 endmenu
 
index b1d6914..f061d0a 100644 (file)
@@ -67,8 +67,8 @@ endif
 
 endif
 
-head-$(CONFIG_SPARC32) := arch/sparc/kernel/head.o
-head-$(CONFIG_SPARC32) += arch/sparc/kernel/init_task.o
+head-$(CONFIG_SPARC32) := arch/sparc/kernel/head_$(BITS).o
+head-$(CONFIG_SPARC32) += arch/sparc/kernel/init_task_$(BITS).o
 head-$(CONFIG_SPARC64) := arch/sparc64/kernel/head.o
 head-$(CONFIG_SPARC64) += arch/sparc64/kernel/init_task.o
 
index 2d65820..6558eea 100644 (file)
@@ -2,25 +2,57 @@
 # Makefile for the linux kernel.
 #
 
-extra-y                := head.o init_task.o vmlinux.lds
-
-EXTRA_AFLAGS   := -ansi
-
-IRQ_OBJS := irq.o sun4m_irq.o sun4c_irq.o sun4d_irq.o
-obj-y    := entry.o wof.o wuf.o etrap.o rtrap.o traps.o $(IRQ_OBJS) \
-           process.o signal.o ioport.o setup.o idprom.o \
-           sys_sparc.o systbls.o \
-           time.o windows.o cpu.o devices.o \
-           tadpole.o tick14.o ptrace.o \
-           unaligned.o una_asm.o muldiv.o \
-           prom.o of_device.o devres.o dma.o
-
-devres-y = ../../../kernel/irq/devres.o
-
-obj-$(CONFIG_PCI) += pcic.o
-obj-$(CONFIG_SMP) += trampoline.o smp.o sun4m_smp.o sun4d_smp.o
-obj-$(CONFIG_SUN_AUXIO) += auxio.o
-obj-$(CONFIG_SUN_PM) += apc.o pmc.o
-obj-$(CONFIG_MODULES) += module.o sparc_ksyms.o
-obj-$(CONFIG_SPARC_LED) += led.o
-obj-$(CONFIG_KGDB) += kgdb.o
+asflags-y := -ansi
+ccflags-y := -Werror
+
+extra-y     := head_$(BITS).o
+extra-y     += init_task_$(BITS).o
+extra-y     += vmlinux.lds
+
+obj-$(CONFIG_SPARC32)   += entry.o wof.o wuf.o
+obj-$(CONFIG_SPARC32)   += etrap_32.o
+obj-$(CONFIG_SPARC32)   += rtrap_32.o
+obj-y                   += traps_$(BITS).o
+
+# IRQ
+obj-y                   += irq_$(BITS).o
+obj-$(CONFIG_SPARC32)   += sun4m_irq.o sun4c_irq.o sun4d_irq.o
+
+obj-y                   += process_$(BITS).o
+obj-y                   += signal_$(BITS).o
+obj-$(CONFIG_SPARC32)   += ioport.o
+obj-y                   += setup_$(BITS).o
+obj-y                   += idprom_$(BITS).o
+obj-y                   += sys_sparc_$(BITS).o
+obj-$(CONFIG_SPARC32)   += systbls_32.o
+obj-y                   += time_$(BITS).o
+obj-$(CONFIG_SPARC32)   += windows.o
+obj-y                   += cpu_$(BITS).o
+obj-$(CONFIG_SPARC32)   += devices.o
+obj-$(CONFIG_SPARC32)   += tadpole.o
+obj-$(CONFIG_SPARC32)   += tick14.o
+obj-y                   += ptrace_$(BITS).o
+obj-y                   += unaligned_$(BITS).o
+obj-y                   += una_asm_$(BITS).o
+obj-$(CONFIG_SPARC32)   += muldiv.o
+obj-y                   += prom_$(BITS).o
+obj-y                   += of_device_$(BITS).o
+
+# sparc32 do not use GENERIC_HARDIRQS but uses the generic devres implementation
+obj-$(CONFIG_SPARC32)     += devres.o
+devres-y                  := ../../../kernel/irq/devres.o
+
+obj-$(CONFIG_SPARC32)     += dma.o
+
+obj-$(CONFIG_SPARC32_PCI) += pcic.o
+
+obj-$(CONFIG_SMP)         += trampoline_$(BITS).o smp_$(BITS).o
+obj-$(CONFIG_SPARC32_SMP) += sun4m_smp.o sun4d_smp.o
+
+obj-y                     += auxio_$(BITS).o
+obj-$(CONFIG_SUN_PM)      += apc.o pmc.o
+
+obj-$(CONFIG_MODULES)     += module_$(BITS).o
+obj-$(CONFIG_MODULES)     += sparc_ksyms_$(BITS).o
+obj-$(CONFIG_SPARC_LED)   += led.o
+obj-$(CONFIG_KGDB)        += kgdb_$(BITS).o