diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-06-03 12:29:15 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-06-03 12:29:15 -0700 |
commit | 20c4856b1d1939647f71dce5e54fe69fde80013f (patch) | |
tree | bfd8e91ad10acf867934d74c1cf9448f38c9fcd2 /arch/powerpc | |
parent | c4d36a822e7c51cd6ffcf9133854d5e32489d269 (diff) | |
parent | 627aa944a17ba82ca3ba87dc1d6ee85bd314ec79 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
[POWERPC] Fix zImage.coff generation for 32-bit pmac
[POWERPC] Fix compile breakage for IBM/AMCC 4xx arch/ppc platforms
[POWERPC] Don't allow PMAC_APM_EMU for 64-bit
[POWERPC] Compare irq numbers with NO_IRQ not IRQ_NONE
[POWERPC] Fix return from pte_alloc_one() in out-of-memory case
[POWERPC] Fix compile warning in pseries xics code
[POWERPC] Don't use HOSTCFLAGS in BOOTCFLAGS
[POWERPC] Create a zImage for legacy iSeries
[POWERPC] pasemi idle uses hard_smp_processor_id
[POWERPC] ps3/interrupt.c uses get_hard_smp_processor_id
[POWERPC] Fix possible access to free pages
[POWERPC] Fix compiler/assembler flags for Ebony platform boot files
[POWERPC] Fix ppc32 single-stepping out of syscalls
[POWERPC] Update documentation for of_find_node_by_type()
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/Makefile | 1 | ||||
-rw-r--r-- | arch/powerpc/boot/Makefile | 22 | ||||
-rwxr-xr-x | arch/powerpc/boot/wrapper | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/irq.c | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/prom.c | 11 | ||||
-rw-r--r-- | arch/powerpc/kernel/ptrace.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/pasemi/idle.c | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/ps3/interrupt.c | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/xics.c | 10 |
9 files changed, 33 insertions, 25 deletions
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 6238b5875fd..fbafd965dcd 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -142,7 +142,6 @@ drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/ # Default to zImage, override when needed defaultimage-y := zImage -defaultimage-$(CONFIG_PPC_ISERIES) := vmlinux defaultimage-$(CONFIG_DEFAULT_UIMAGE) := uImage KBUILD_IMAGE := $(defaultimage-y) all: $(KBUILD_IMAGE) diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 83788986b93..ff2701949ee 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -11,20 +11,18 @@ # bootloader and increase compatibility with OpenFirmware. # # To this end we need to define BOOTCC, etc, as the tools -# needed to build the 32 bit image. These are normally HOSTCC, -# but may be a third compiler if, for example, you are cross -# compiling from an intel box. Once the 64bit ppc gcc is -# stable it will probably simply be a compiler switch to -# compile for 32bit mode. +# needed to build the 32 bit image. That's normally the same +# compiler for the rest of the kernel, with the -m32 flag added. # To make it easier to setup a cross compiler, # CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE # in the toplevel makefile. all: $(obj)/zImage -HOSTCC := gcc -BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \ - $(shell $(CROSS32CC) -print-file-name=include) -fPIC +BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ + -fno-strict-aliasing -Os -msoft-float -pipe \ + -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \ + -isystem $(shell $(CROSS32CC) -print-file-name=include) BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc ifeq ($(call cc-option-yn, -fstack-protector),y) @@ -33,8 +31,8 @@ endif BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) -$(obj)/44x.o: BOOTCFLAGS += -Wa,-mbooke -$(obj)/ebony.o: BOOTCFLAGS += -Wa,-mbooke +$(obj)/44x.o: BOOTCFLAGS += -mcpu=440 +$(obj)/ebony.o: BOOTCFLAGS += -mcpu=440 zlib := inffast.c inflate.c inftrees.c zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h @@ -136,6 +134,7 @@ image-$(CONFIG_PPC_EFIKA) += zImage.chrp image-$(CONFIG_PPC_PMAC) += zImage.pmac image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800 +image-$(CONFIG_PPC_ISERIES) += zImage.iseries image-$(CONFIG_DEFAULT_UIMAGE) += uImage ifneq ($(CONFIG_DEVICE_TREE),"") @@ -185,6 +184,9 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) $(obj)/zImage.%: vmlinux $(wrapperbits) $(call if_changed,wrap,$*) +$(obj)/zImage.iseries: vmlinux + $(STRIP) -s -R .comment $< -o $@ + $(obj)/zImage.ps3: vmlinux $(STRIP) -s -R .comment $< -o $@ diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 2ed8b8b3f0e..da77adc7307 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper @@ -129,7 +129,7 @@ case "$platform" in pmac|pseries|chrp) platformo=$object/of.o ;; -pmaccoff) +coff) platformo=$object/of.o lds=$object/zImage.coff.lds ;; @@ -220,7 +220,7 @@ case "$platform" in pseries|chrp) $object/addnote "$ofile" ;; -pmaccoff) +coff) ${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile" $object/hack-coff "$ofile" ;; diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 068377a2a8d..42c8ed6ed52 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -489,7 +489,7 @@ struct irq_host *irq_alloc_host(unsigned int revmap_type, case IRQ_HOST_MAP_LINEAR: rmap = (unsigned int *)(host + 1); for (i = 0; i < revmap_arg; i++) - rmap[i] = IRQ_NONE; + rmap[i] = NO_IRQ; host->revmap_data.linear.size = revmap_arg; smp_wmb(); host->revmap_data.linear.revmap = rmap; @@ -614,7 +614,7 @@ unsigned int irq_create_mapping(struct irq_host *host, * host->ops->map() to update the flags */ virq = irq_find_mapping(host, hwirq); - if (virq != IRQ_NONE) { + if (virq != NO_IRQ) { if (host->ops->remap) host->ops->remap(host, virq, hwirq); pr_debug("irq: -> existing mapping on virq %d\n", virq); @@ -741,7 +741,7 @@ void irq_dispose_mapping(unsigned int virq) switch(host->revmap_type) { case IRQ_HOST_MAP_LINEAR: if (hwirq < host->revmap_data.linear.size) - host->revmap_data.linear.revmap[hwirq] = IRQ_NONE; + host->revmap_data.linear.revmap[hwirq] = NO_IRQ; break; case IRQ_HOST_MAP_TREE: /* Check if radix tree allocated yet */ diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 066a6a7a25b..af42ddab3ab 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -1171,11 +1171,12 @@ EXPORT_SYMBOL(of_find_node_by_name); /** * of_find_node_by_type - Find a node by its "device_type" property - * @from: The node to start searching from or NULL, the node - * you pass will not be searched, only the next one - * will; typically, you pass what the previous call - * returned. of_node_put() will be called on it - * @name: The type string to match against + * @from: The node to start searching from, or NULL to start searching + * the entire device tree. The node you pass will not be + * searched, only the next one will; typically, you pass + * what the previous call returned. of_node_put() will be + * called on from for you. + * @type: The type string to match against * * Returns a node pointer with refcount incremented, use * of_node_put() on it when done. diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index f4f391cdd8f..bf76562167c 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c @@ -218,6 +218,7 @@ set_single_step(struct task_struct *task) regs->msr |= MSR_SE; #endif } + set_tsk_thread_flag(task, TIF_SINGLESTEP); } static inline void @@ -233,6 +234,7 @@ clear_single_step(struct task_struct *task) regs->msr &= ~MSR_SE; #endif } + clear_tsk_thread_flag(task, TIF_SINGLESTEP); } #endif /* CONFIG_PPC32 */ diff --git a/arch/powerpc/platforms/pasemi/idle.c b/arch/powerpc/platforms/pasemi/idle.c index 03cd45d8fef..3c962d5757b 100644 --- a/arch/powerpc/platforms/pasemi/idle.c +++ b/arch/powerpc/platforms/pasemi/idle.c @@ -26,6 +26,7 @@ #include <asm/machdep.h> #include <asm/reg.h> +#include <asm/smp.h> #include "pasemi.h" diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c index 9da82c266ba..ec9030dbb5f 100644 --- a/arch/powerpc/platforms/ps3/interrupt.c +++ b/arch/powerpc/platforms/ps3/interrupt.c @@ -25,6 +25,7 @@ #include <asm/machdep.h> #include <asm/udbg.h> #include <asm/lv1call.h> +#include <asm/smp.h> #include "platform.h" diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index b854e7f1001..f1df942072b 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c @@ -752,6 +752,7 @@ skip_gserver_check: void xics_request_IPIs(void) { unsigned int ipi; + int rc; ipi = irq_create_mapping(xics_host, XICS_IPI); BUG_ON(ipi == NO_IRQ); @@ -762,11 +763,12 @@ void xics_request_IPIs(void) */ set_irq_handler(ipi, handle_percpu_irq); if (firmware_has_feature(FW_FEATURE_LPAR)) - request_irq(ipi, xics_ipi_action_lpar, IRQF_DISABLED, - "IPI", NULL); + rc = request_irq(ipi, xics_ipi_action_lpar, IRQF_DISABLED, + "IPI", NULL); else - request_irq(ipi, xics_ipi_action_direct, IRQF_DISABLED, - "IPI", NULL); + rc = request_irq(ipi, xics_ipi_action_direct, IRQF_DISABLED, + "IPI", NULL); + BUG_ON(rc); } #endif /* CONFIG_SMP */ |