Commit 2578bfae authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Paul Mackerras

[POWERPC] Create and use CONFIG_WORD_SIZE

Linus made this suggestion for the x86 merge and this starts the process
for powerpc.  We assume that CONFIG_PPC64 implies CONFIG_PPC_MERGE and
CONFIG_PPC_STD_MMU_32 implies CONFIG_PPC_STD_MMU.
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 75918a4b
...@@ -14,6 +14,11 @@ config 64BIT ...@@ -14,6 +14,11 @@ config 64BIT
bool bool
default y if PPC64 default y if PPC64
config WORD_SIZE
int
default 64 if PPC64
default 32 if !PPC64
config PPC_MERGE config PPC_MERGE
def_bool y def_bool y
......
...@@ -39,7 +39,6 @@ KBUILD_DEFCONFIG := $(shell uname -m)_defconfig ...@@ -39,7 +39,6 @@ KBUILD_DEFCONFIG := $(shell uname -m)_defconfig
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
OLDARCH := ppc64 OLDARCH := ppc64
SZ := 64
new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi) new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi)
...@@ -49,16 +48,21 @@ endif ...@@ -49,16 +48,21 @@ endif
else else
OLDARCH := ppc OLDARCH := ppc
SZ := 32 endif
# It seems there are times we use this Makefile without
# including the config file, but this replicates the old behaviour
ifeq ($(CONFIG_WORD_SIZE),)
CONFIG_WORD_SIZE := 32
endif endif
UTS_MACHINE := $(OLDARCH) UTS_MACHINE := $(OLDARCH)
ifeq ($(HAS_BIARCH),y) ifeq ($(HAS_BIARCH),y)
override AS += -a$(SZ) override AS += -a$(CONFIG_WORD_SIZE)
override LD += -m elf$(SZ)ppc override LD += -m elf$(CONFIG_WORD_SIZE)ppc
override CC += -m$(SZ) override CC += -m$(CONFIG_WORD_SIZE)
override AR := GNUTARGET=elf$(SZ)-powerpc $(AR) override AR := GNUTARGET=elf$(CONFIG_WORD_SIZE)-powerpc $(AR)
endif endif
LDFLAGS_vmlinux := -Bstatic LDFLAGS_vmlinux := -Bstatic
...@@ -72,7 +76,7 @@ AFLAGS += $(AFLAGS-y) ...@@ -72,7 +76,7 @@ AFLAGS += $(AFLAGS-y)
CFLAGS += -msoft-float -pipe $(CFLAGS-y) CFLAGS += -msoft-float -pipe $(CFLAGS-y)
CPP = $(CC) -E $(CFLAGS) CPP = $(CC) -E $(CFLAGS)
CHECKFLAGS += -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__ CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi) GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi)
...@@ -120,8 +124,7 @@ cpu-as-$(CONFIG_E200) += -Wa,-me200 ...@@ -120,8 +124,7 @@ cpu-as-$(CONFIG_E200) += -Wa,-me200
AFLAGS += $(cpu-as-y) AFLAGS += $(cpu-as-y)
CFLAGS += $(cpu-as-y) CFLAGS += $(cpu-as-y)
head-y := arch/powerpc/kernel/head_32.o head-y := arch/powerpc/kernel/head_$(CONFIG_WORD_SIZE).o
head-$(CONFIG_PPC64) := arch/powerpc/kernel/head_64.o
head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o
head-$(CONFIG_40x) := arch/powerpc/kernel/head_40x.o head-$(CONFIG_40x) := arch/powerpc/kernel/head_40x.o
head-$(CONFIG_44x) := arch/powerpc/kernel/head_44x.o head-$(CONFIG_44x) := arch/powerpc/kernel/head_44x.o
......
...@@ -38,10 +38,10 @@ obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o ...@@ -38,10 +38,10 @@ obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
obj-$(CONFIG_TAU) += tau_6xx.o obj-$(CONFIG_TAU) += tau_6xx.o
obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \
obj32-$(CONFIG_HIBERNATION) += swsusp_32.o swsusp_$(CONFIG_WORD_SIZE).o
obj64-$(CONFIG_HIBERNATION) += swsusp_64.o swsusp_asm64.o obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o
obj32-$(CONFIG_MODULES) += module_32.o obj-$(CONFIG_MODULES) += module_$(CONFIG_WORD_SIZE).o
ifeq ($(CONFIG_PPC_MERGE),y) ifeq ($(CONFIG_PPC_MERGE),y)
...@@ -54,9 +54,10 @@ extra-$(CONFIG_8xx) := head_8xx.o ...@@ -54,9 +54,10 @@ extra-$(CONFIG_8xx) := head_8xx.o
extra-y += vmlinux.lds extra-y += vmlinux.lds
obj-y += time.o prom.o traps.o setup-common.o \ obj-y += time.o prom.o traps.o setup-common.o \
udbg.o misc.o io.o udbg.o misc.o io.o \
obj-$(CONFIG_PPC32) += entry_32.o setup_32.o misc_32.o misc_$(CONFIG_WORD_SIZE).o
obj-$(CONFIG_PPC64) += misc_64.o dma_64.o iommu.o obj-$(CONFIG_PPC32) += entry_32.o setup_32.o
obj-$(CONFIG_PPC64) += dma_64.o iommu.o
obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o
obj-$(CONFIG_MODULES) += ppc_ksyms.o obj-$(CONFIG_MODULES) += ppc_ksyms.o
obj-$(CONFIG_BOOTX_TEXT) += btext.o obj-$(CONFIG_BOOTX_TEXT) += btext.o
...@@ -64,16 +65,12 @@ obj-$(CONFIG_SMP) += smp.o ...@@ -64,16 +65,12 @@ obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_KPROBES) += kprobes.o
obj-$(CONFIG_PPC_UDBG_16550) += legacy_serial.o udbg_16550.o obj-$(CONFIG_PPC_UDBG_16550) += legacy_serial.o udbg_16550.o
module-$(CONFIG_PPC64) += module_64.o pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o
obj-$(CONFIG_MODULES) += $(module-y) obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
pci-common.o
pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o isa-bridge.o
pci32-$(CONFIG_PPC32) := pci_32.o
obj-$(CONFIG_PCI) += $(pci64-y) $(pci32-y) pci-common.o
obj-$(CONFIG_PCI_MSI) += msi.o obj-$(CONFIG_PCI_MSI) += msi.o
kexec-$(CONFIG_PPC64) := machine_kexec_64.o obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \
kexec-$(CONFIG_PPC32) := machine_kexec_32.o machine_kexec_$(CONFIG_WORD_SIZE).o
obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y)
obj-$(CONFIG_AUDIT) += audit.o obj-$(CONFIG_AUDIT) += audit.o
obj64-$(CONFIG_AUDIT) += compat_audit.o obj64-$(CONFIG_AUDIT) += compat_audit.o
...@@ -87,7 +84,6 @@ smpobj-$(CONFIG_SMP) += smp.o ...@@ -87,7 +84,6 @@ smpobj-$(CONFIG_SMP) += smp.o
endif endif
obj-$(CONFIG_PPC32) += $(obj32-y)
obj-$(CONFIG_PPC64) += $(obj64-y) obj-$(CONFIG_PPC64) += $(obj64-y)
extra-$(CONFIG_PPC_FPU) += fpu.o extra-$(CONFIG_PPC_FPU) += fpu.o
......
...@@ -7,11 +7,12 @@ EXTRA_CFLAGS += -mno-minimal-toc ...@@ -7,11 +7,12 @@ EXTRA_CFLAGS += -mno-minimal-toc
endif endif
ifeq ($(CONFIG_PPC_MERGE),y) ifeq ($(CONFIG_PPC_MERGE),y)
obj-y := string.o alloc.o obj-y := string.o alloc.o \
obj-$(CONFIG_PPC32) += div64.o copy_32.o checksum_32.o checksum_$(CONFIG_WORD_SIZE).o
obj-$(CONFIG_PPC32) += div64.o copy_32.o
endif endif
obj-$(CONFIG_PPC64) += checksum_64.o copypage_64.o copyuser_64.o \ obj-$(CONFIG_PPC64) += copypage_64.o copyuser_64.o \
memcpy_64.o usercopy_64.o mem_64.o string.o memcpy_64.o usercopy_64.o mem_64.o string.o
obj-$(CONFIG_QUICC_ENGINE) += rheap.o obj-$(CONFIG_QUICC_ENGINE) += rheap.o
obj-$(CONFIG_XMON) += sstep.o obj-$(CONFIG_XMON) += sstep.o
......
...@@ -6,13 +6,16 @@ ifeq ($(CONFIG_PPC64),y) ...@@ -6,13 +6,16 @@ ifeq ($(CONFIG_PPC64),y)
EXTRA_CFLAGS += -mno-minimal-toc EXTRA_CFLAGS += -mno-minimal-toc
endif endif
obj-y := fault.o mem.o lmb.o obj-y := fault.o mem.o lmb.o \
obj-$(CONFIG_PPC32) += init_32.o pgtable_32.o mmu_context_32.o init_$(CONFIG_WORD_SIZE).o \
pgtable_$(CONFIG_WORD_SIZE).o \
mmu_context_$(CONFIG_WORD_SIZE).o
hash-$(CONFIG_PPC_NATIVE) := hash_native_64.o hash-$(CONFIG_PPC_NATIVE) := hash_native_64.o
obj-$(CONFIG_PPC64) += init_64.o pgtable_64.o mmu_context_64.o \ obj-$(CONFIG_PPC64) += hash_utils_64.o \
hash_utils_64.o hash_low_64.o tlb_64.o \
slb_low.o slb.o stab.o mmap.o $(hash-y) slb_low.o slb.o stab.o mmap.o $(hash-y)
obj-$(CONFIG_PPC_STD_MMU_32) += ppc_mmu_32.o hash_low_32.o tlb_32.o obj-$(CONFIG_PPC_STD_MMU_32) += ppc_mmu_32.o
obj-$(CONFIG_PPC_STD_MMU) += hash_low_$(CONFIG_WORD_SIZE).o \
tlb_$(CONFIG_WORD_SIZE).o
obj-$(CONFIG_40x) += 40x_mmu.o obj-$(CONFIG_40x) += 40x_mmu.o
obj-$(CONFIG_44x) += 44x_mmu.o obj-$(CONFIG_44x) += 44x_mmu.o
obj-$(CONFIG_FSL_BOOKE) += fsl_booke_mmu.o obj-$(CONFIG_FSL_BOOKE) += fsl_booke_mmu.o
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
mainmenu "Linux/PowerPC Kernel Configuration" mainmenu "Linux/PowerPC Kernel Configuration"
config WORD_SIZE
int
default 32
config MMU config MMU
bool bool
default y default y
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment