Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccaa36f7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (29 commits)
  [POWERPC] Fix rheap alignment problem
  [POWERPC] Use check_legacy_ioport() for ISAPnP
  [POWERPC] Avoid NULL pointer in gpio1_interrupt
  [POWERPC] Enable generic rtc hook for the MPC8349 mITX
  [POWERPC] Add powerpc get/set_rtc_time interface to new generic rtc class
  [POWERPC] Create a "wrapper" script and use it in arch/powerpc/boot
  [POWERPC] fix spin lock nesting in hvc_iseries
  [POWERPC] EEH failure to mark pci slot as frozen.
  [POWERPC] update powerpc defconfig files after libata kconfig breakage
  [POWERPC] enable sysrq in pmac32_defconfig
  [POWERPC] UPIO_TSI cleanup
  [POWERPC] rewrite mkprep and mkbugboot in sane C
  [POWERPC] maple/pci iomem annotations
  [POWERPC] powerpc oprofile __user annotations
  [POWERPC] cell spufs iomem annotations
  [POWERPC] NULL noise removal: spufs
  [POWERPC] ppc math-emu needs -fno-builtin-fabs for math.c and fabs.c
  [POWERPC] update mpc8349_itx_defconfig and remove some debug settings
  [POWERPC] Always call cede in pseries dedicated idle loop
  [POWERPC] Fix loop logic in irq_alloc_virt()
  ...
parents b4a9071a 5e980823
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ CROSS32_COMPILE ?=
CROSS32CC		:= $(CROSS32_COMPILE)gcc
CROSS32CC		:= $(CROSS32_COMPILE)gcc
CROSS32AS		:= $(CROSS32_COMPILE)as
CROSS32AS		:= $(CROSS32_COMPILE)as
CROSS32LD		:= $(CROSS32_COMPILE)ld
CROSS32LD		:= $(CROSS32_COMPILE)ld
CROSS32AR		:= $(CROSS32_COMPILE)ar
CROSS32OBJCOPY		:= $(CROSS32_COMPILE)objcopy
CROSS32OBJCOPY		:= $(CROSS32_COMPILE)objcopy


ifeq ($(HAS_BIARCH),y)
ifeq ($(HAS_BIARCH),y)
@@ -28,10 +29,11 @@ CROSS32CC := $(CC) -m32
CROSS32AS	:= $(AS) -a32
CROSS32AS	:= $(AS) -a32
CROSS32LD	:= $(LD) -m elf32ppc
CROSS32LD	:= $(LD) -m elf32ppc
CROSS32OBJCOPY	:= $(OBJCOPY)
CROSS32OBJCOPY	:= $(OBJCOPY)
CROSS32AR	:= $(AR)
endif
endif
endif
endif


export CROSS32CC CROSS32AS CROSS32LD CROSS32OBJCOPY
export CROSS32CC CROSS32AS CROSS32LD CROSS32AR CROSS32OBJCOPY


KBUILD_DEFCONFIG := $(shell uname -m)_defconfig
KBUILD_DEFCONFIG := $(shell uname -m)_defconfig


@@ -146,7 +148,7 @@ all: $(KBUILD_IMAGE)


CPPFLAGS_vmlinux.lds	:= -Upowerpc
CPPFLAGS_vmlinux.lds	:= -Upowerpc


BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm uImage vmlinux.bin
BOOT_TARGETS = zImage zImage.initrd uImage


PHONY += $(BOOT_TARGETS)
PHONY += $(BOOT_TARGETS)


+91 −133
Original line number Original line Diff line number Diff line
@@ -20,33 +20,34 @@
#	CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
#	CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
#	in the toplevel makefile.
#	in the toplevel makefile.


all: $(obj)/zImage


HOSTCC		:= gcc
HOSTCC		:= gcc
BOOTCFLAGS	:= $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \
BOOTCFLAGS	:= $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \
		   $(shell $(CROSS32CC) -print-file-name=include) -fPIC
		   $(shell $(CROSS32CC) -print-file-name=include) -fPIC
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
OBJCOPYFLAGS    := contents,alloc,load,readonly,data

OBJCOPY_COFF_ARGS := -O aixcoff-rs6000 --set-start 0x500000
ifeq ($(call cc-option-yn, -fstack-protector),y)
OBJCOPY_MIB_ARGS  := -O aixcoff-rs6000 -R .stab -R .stabstr -R .comment
BOOTCFLAGS	+= -fno-stack-protector
endif

BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(obj)


zlib       := inffast.c inflate.c inftrees.c
zlib       := inffast.c inflate.c inftrees.c
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
zliblinuxheader := zlib.h zconf.h zutil.h
zliblinuxheader := zlib.h zconf.h zutil.h


$(addprefix $(obj)/,$(zlib) main.o): $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
$(addprefix $(obj)/,$(zlib) main.o): $(addprefix $(obj)/,$(zliblinuxheader)) \
#$(addprefix $(obj)/,main.o): $(addprefix $(obj)/,zlib.h)
		$(addprefix $(obj)/,$(zlibheader))

src-wlib := string.S stdio.c main.c div64.S $(zlib)
src-plat := of.c
src-boot := crt0.S $(src-wlib) $(src-plat) empty.c


src-boot-$(CONFIG_PPC_MULTIPLATFORM) := of.c
src-boot := crt0.S string.S stdio.c main.c div64.S $(src-boot-y)
src-boot += $(zlib)
src-boot := $(addprefix $(obj)/, $(src-boot))
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))

obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
ifeq ($(call cc-option-yn, -fstack-protector),y)
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
BOOTCFLAGS	+= -fno-stack-protector
endif

BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(obj)


quiet_cmd_copy_zlib = COPY    $@
quiet_cmd_copy_zlib = COPY    $@
      cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@
      cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@
@@ -66,8 +67,14 @@ $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
$(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/%
$(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/%
	$(call cmd,copy_zliblinuxheader)
	$(call cmd,copy_zliblinuxheader)


clean-files := $(zlib) $(zlibheader) $(zliblinuxheader)
$(obj)/empty.c:
	@touch $@

$(obj)/zImage.lds $(obj)/zImage.coff.lds: $(obj)/%: $(srctree)/$(src)/%.S
	@cp $< $@


clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
		$(obj)/empty.c


quiet_cmd_bootcc = BOOTCC  $@
quiet_cmd_bootcc = BOOTCC  $@
      cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
      cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
@@ -75,146 +82,97 @@ quiet_cmd_bootcc = BOOTCC $@
quiet_cmd_bootas = BOOTAS  $@
quiet_cmd_bootas = BOOTAS  $@
      cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
      cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<


quiet_cmd_bootld = BOOTLD  $@
quiet_cmd_bootar = BOOTAR  $@
      cmd_bootld = $(CROSS32LD) -T $(srctree)/$(src)/$(3) -o $@ $(2)
      cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $^; mv $@.$$$$ $@


$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c
	$(call if_changed_dep,bootcc)
	$(call if_changed_dep,bootcc)
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S
	$(call if_changed_dep,bootas)
	$(call if_changed_dep,bootas)


#-----------------------------------------------------------
$(obj)/wrapper.a: $(obj-wlib)
# ELF sections within the zImage bootloader/wrapper
	$(call cmd,bootar)
#-----------------------------------------------------------
required := vmlinux.strip
initrd   := initrd

obj-sec = $(foreach section, $(1), $(patsubst %,$(obj)/kernel-%.o, $(section)))
src-sec = $(foreach section, $(1), $(patsubst %,$(obj)/kernel-%.c, $(section)))
gz-sec  = $(foreach section, $(1), $(patsubst %,$(obj)/kernel-%.gz, $(section)))


hostprogs-y	:= addnote addRamDisk hack-coff
hostprogs-y	:= addnote addRamDisk hack-coff


targets += zImage.vmode zImage.initrd.vmode zImage zImage.initrd \
extra-y		:= $(obj)/crt0.o $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
	   zImage.coff zImage.initrd.coff miboot.image miboot.initrd.image \
		   $(obj)/zImage.lds $(obj)/zImage.coff.lds
	   $(patsubst $(obj)/%,%, $(call obj-sec, $(required) $(initrd))) \
	   $(patsubst $(obj)/%,%, $(call src-sec, $(required) $(initrd))) \
	   $(patsubst $(obj)/%,%, $(call gz-sec, $(required) $(initrd))) \
	   vmlinux.initrd dummy.o
extra-y			:= initrd.o


quiet_cmd_ramdisk = RAMDISK $@
wrapper		:=$(srctree)/$(src)/wrapper
      cmd_ramdisk = $(obj)/addRamDisk $(obj)/ramdisk.image.gz $< $@
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff)


quiet_cmd_stripvm = STRIP   $@
#############
      cmd_stripvm = $(STRIP) -s -R .comment $< -o $@
# Bits for building various flavours of zImage


vmlinux.strip: vmlinux
ifneq ($(CROSS32_COMPILE),)
	$(call if_changed,stripvm)
CROSSWRAP := -C $(CROSS32_COMPILE)
$(obj)/vmlinux.initrd: vmlinux.strip $(obj)/addRamDisk $(obj)/ramdisk.image.gz
else
	$(call if_changed,ramdisk)
ifneq ($(CROSS_COMPILE),)
CROSSWRAP := -C $(CROSS_COMPILE)
endif
endif


quiet_cmd_addsection = ADDSEC  $@
quiet_cmd_wrap	= WRAP    $@
      cmd_addsection = $(CROSS32OBJCOPY) $@ \
      cmd_wrap	=$(wrapper) -c -o $@ -p $2 $(CROSSWRAP) vmlinux
		--add-section=.kernel:$(strip $(patsubst $(obj)/kernel-%.o,%, $@))=$(patsubst %.o,%.gz, $@) \
quiet_cmd_wrap_initrd = WRAP    $@
		--set-section-flags=.kernel:$(strip $(patsubst $(obj)/kernel-%.o,%, $@))=$(OBJCOPYFLAGS)
      cmd_wrap_initrd =$(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
				-i $(obj)/ramdisk.image.gz vmlinux


quiet_cmd_addnote = ADDNOTE $@
$(obj)/zImage.chrp: vmlinux $(wrapperbits)
      cmd_addnote = $(obj)/addnote $@
	$(call cmd,wrap,chrp)


quiet_cmd_gen-miboot = GEN     $@
$(obj)/zImage.initrd.chrp: vmlinux $(wrapperbits)
      cmd_gen-miboot = $(OBJCOPY) $(OBJCOPY_MIB_ARGS) \
	$(call cmd,wrap_initrd,chrp)
		       --add-section=$1=$(word 2, $^) $< $@


quiet_cmd_gencoff = COFF    $@
$(obj)/zImage.pseries:	vmlinux $(wrapperbits)
      cmd_gencoff = $(OBJCOPY) $(OBJCOPY_COFF_ARGS) $@ && \
	$(call cmd,wrap,pseries)
		    $(obj)/hack-coff $@


$(call gz-sec, $(required)): $(obj)/kernel-%.gz: %
$(obj)/zImage.initrd.pseries: vmlinux $(wrapperbits)
	$(call if_changed,gzip)
	$(call cmd,wrap_initrd,pseries)


$(obj)/kernel-initrd.gz: $(obj)/ramdisk.image.gz
$(obj)/zImage.pmac: vmlinux $(wrapperbits)
	cp -f $(obj)/ramdisk.image.gz $@
	$(call cmd,wrap,pmac)


$(call src-sec, $(required) $(initrd)): $(obj)/kernel-%.c: $(obj)/kernel-%.gz
$(obj)/zImage.initrd.pmac: vmlinux $(wrapperbits)
	@touch $@
	$(call cmd,wrap_initrd,pmac)


$(call obj-sec, $(required) $(initrd)): $(obj)/kernel-%.o: $(obj)/kernel-%.c
$(obj)/zImage.coff: vmlinux $(wrapperbits)
	$(call if_changed_dep,bootcc)
	$(call cmd,wrap,pmaccoff)
	$(call cmd,addsection)

$(obj)/zImage.initrd.coff: vmlinux $(wrapperbits)
	$(call cmd,wrap_initrd,pmaccoff)


$(obj)/zImage.vmode $(obj)/zImage.coff: obj-boot += $(call obj-sec, $(required))
$(obj)/zImage.miboot: vmlinux $(wrapperbits)
$(obj)/zImage.vmode: $(call obj-sec, $(required)) $(obj-boot) $(srctree)/$(src)/zImage.lds
	$(call cmd,wrap,miboot)
	$(call cmd,bootld,$(obj-boot),zImage.lds)


$(obj)/zImage.initrd.vmode $(obj)/zImage.initrd.coff: obj-boot += $(call obj-sec, $(required) $(initrd))
$(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits)
$(obj)/zImage.initrd.vmode: $(call obj-sec, $(required) $(initrd)) $(obj-boot) $(srctree)/$(src)/zImage.lds
	$(call cmd,wrap_initrd,miboot)
	$(call cmd,bootld,$(obj-boot),zImage.lds)

$(obj)/uImage: vmlinux $(wrapperbits)
	$(call cmd,wrap,uboot)

image-$(CONFIG_PPC_PSERIES)	+= zImage.pseries
image-$(CONFIG_PPC_MAPLE)	+= zImage.pseries
image-$(CONFIG_PPC_CELL)	+= zImage.pseries
image-$(CONFIG_PPC_CHRP)	+= zImage.chrp
image-$(CONFIG_PPC_PMAC)	+= zImage.pmac
image-$(CONFIG_DEFAULT_UIMAGE)	+= uImage


# For 32-bit powermacs, build the COFF and miboot images
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
# as well as the ELF images.
coffimage-$(CONFIG_PPC_PMAC)-$(CONFIG_PPC32) := $(obj)/zImage.coff
ifeq ($(CONFIG_PPC32),y)
coffrdimg-$(CONFIG_PPC_PMAC)-$(CONFIG_PPC32) := $(obj)/zImage.initrd.coff
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
mibootimg-$(CONFIG_PPC_PMAC)-$(CONFIG_PPC32) := $(obj)/miboot.image
endif
mibrdimg-$(CONFIG_PPC_PMAC)-$(CONFIG_PPC32)  := $(obj)/miboot.initrd.image


initrd-y := $(patsubst zImage%, zImage.initrd%, $(image-y))
$(obj)/zImage: $(obj)/zImage.vmode $(obj)/addnote $(coffimage-y-y) \

			$(mibootimg-y-y)
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
	@cp -f $< $@
	@rm -f $@; ln $< $@
	$(call if_changed,addnote)
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))

	@rm -f $@; ln $< $@
$(obj)/zImage.initrd: $(obj)/zImage.initrd.vmode $(obj)/addnote \

			$(coffrdimg-y-y) $(mibrdimg-y-y)
install: $(CONFIGURE) $(image-y)
	@cp -f $< $@
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
	$(call if_changed,addnote)


clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip.gz)
$(obj)/zImage.coff: $(call obj-sec, $(required)) $(obj-boot) \
clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.bin.gz)
			$(srctree)/$(src)/zImage.coff.lds $(obj)/hack-coff
	$(call cmd,bootld,$(obj-boot),zImage.coff.lds)
	$(call cmd,gencoff)

$(obj)/zImage.initrd.coff: $(call obj-sec, $(required) $(initrd)) $(obj-boot) \
			   $(srctree)/$(src)/zImage.coff.lds $(obj)/hack-coff
	$(call cmd,bootld,$(obj-boot),zImage.coff.lds)
	$(call cmd,gencoff)

$(obj)/miboot.image: $(obj)/dummy.o $(obj)/vmlinux.gz
	$(call cmd,gen-miboot,image)

$(obj)/miboot.initrd.image: $(obj)/miboot.image $(images)/ramdisk.image.gz
	$(call cmd,gen-miboot,initrd)

#-----------------------------------------------------------
# build u-boot images
#-----------------------------------------------------------
quiet_cmd_mygzip = GZIP $@
cmd_mygzip = gzip -f -9 < $< > $@.$$$$ && mv $@.$$$$ $@

quiet_cmd_objbin = OBJCOPY $@
      cmd_objbin = $(OBJCOPY) -O binary $< $@

quiet_cmd_uimage = UIMAGE $@
      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A ppc -O linux -T kernel \
               -C gzip -a 00000000 -e 00000000 -n 'Linux-$(KERNELRELEASE)' \
               -d $< $@

MKIMAGE		:= $(srctree)/scripts/mkuboot.sh
targets		+= uImage
extra-y		+= vmlinux.bin vmlinux.gz

$(obj)/vmlinux.bin: vmlinux FORCE
	$(call if_changed,objbin)

$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
	$(call if_changed,mygzip)

$(obj)/uImage: $(obj)/vmlinux.gz
	$(Q)rm -f $@
	$(call cmd,uimage)
	@echo -n '  Image: $@ '
	@if [ -f $@ ]; then echo 'is ready' ; else echo 'not made'; fi

install: $(CONFIGURE) $(BOOTIMAGE)
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" "$(BOOTIMAGE)"

clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip)
+302 −0
Original line number Original line Diff line number Diff line
/*
 * MPC8560 ADS Device Tree Source
 *
 * Copyright 2006 Freescale Semiconductor Inc.
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */


/ {
	model = "MPC8560ADS";
	compatible = "MPC85xxADS";
	#address-cells = <1>;
	#size-cells = <1>;
	linux,phandle = <100>;

	cpus {
		#cpus = <1>;
		#address-cells = <1>;
		#size-cells = <0>;
		linux,phandle = <200>;

		PowerPC,8560@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <20>;	// 32 bytes
			i-cache-line-size = <20>;	// 32 bytes
			d-cache-size = <8000>;		// L1, 32K
			i-cache-size = <8000>;		// L1, 32K
			timebase-frequency = <04ead9a0>;
			bus-frequency = <13ab6680>;
			clock-frequency = <312c8040>;
			32-bit;
			linux,phandle = <201>;
			linux,boot-cpu;
		};
	};

	memory {
		device_type = "memory";
		linux,phandle = <300>;
		reg = <00000000 10000000>;
	};

	soc8560@e0000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		#interrupt-cells = <2>;
		device_type = "soc";
		ranges = <0 e0000000 00100000>;
		reg = <e0000000 00000200>;
		bus-frequency = <13ab6680>;

		mdio@24520 {
			device_type = "mdio";
			compatible = "gianfar";
			reg = <24520 20>;
			linux,phandle = <24520>;
			#address-cells = <1>;
			#size-cells = <0>;
			ethernet-phy@0 {
				linux,phandle = <2452000>;
				interrupt-parent = <40000>;
				interrupts = <35 1>;
				reg = <0>;
				device_type = "ethernet-phy";
			};
			ethernet-phy@1 {
				linux,phandle = <2452001>;
				interrupt-parent = <40000>;
				interrupts = <35 1>;
				reg = <1>;
				device_type = "ethernet-phy";
			};
			ethernet-phy@2 {
				linux,phandle = <2452002>;
				interrupt-parent = <40000>;
				interrupts = <37 1>;
				reg = <2>;
				device_type = "ethernet-phy";
			};
			ethernet-phy@3 {
				linux,phandle = <2452003>;
				interrupt-parent = <40000>;
				interrupts = <37 1>;
				reg = <3>;
				device_type = "ethernet-phy";
			};
		};

		ethernet@24000 {
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
			reg = <24000 1000>;
			address = [ 00 00 0C 00 00 FD ];
			interrupts = <d 2 e 2 12 2>;
			interrupt-parent = <40000>;
			phy-handle = <2452000>;
		};

		ethernet@25000 {
			#address-cells = <1>;
			#size-cells = <0>;
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
			reg = <25000 1000>;
			address = [ 00 00 0C 00 01 FD ];
			interrupts = <13 2 14 2 18 2>;
			interrupt-parent = <40000>;
			phy-handle = <2452001>;
		};

		pci@8000 {
			linux,phandle = <8000>;
			#interrupt-cells = <1>;
			#size-cells = <2>;
			#address-cells = <3>;
			compatible = "85xx";
			device_type = "pci";
			reg = <8000 400>;
			clock-frequency = <3f940aa>;
			interrupt-map-mask = <f800 0 0 7>;
			interrupt-map = <

					/* IDSEL 0x2 */
					 1000 0 0 1 40000 31 1
					 1000 0 0 2 40000 32 1
					 1000 0 0 3 40000 33 1
					 1000 0 0 4 40000 34 1

					/* IDSEL 0x3 */
					 1800 0 0 1 40000 34 1
					 1800 0 0 2 40000 31 1
					 1800 0 0 3 40000 32 1
					 1800 0 0 4 40000 33 1

					/* IDSEL 0x4 */
					 2000 0 0 1 40000 33 1
					 2000 0 0 2 40000 34 1
					 2000 0 0 3 40000 31 1
					 2000 0 0 4 40000 32 1

					/* IDSEL 0x5  */
					 2800 0 0 1 40000 32 1
					 2800 0 0 2 40000 33 1
					 2800 0 0 3 40000 34 1
					 2800 0 0 4 40000 31 1

					/* IDSEL 12 */
					 6000 0 0 1 40000 31 1
					 6000 0 0 2 40000 32 1
					 6000 0 0 3 40000 33 1
					 6000 0 0 4 40000 34 1

					/* IDSEL 13 */
					 6800 0 0 1 40000 34 1
					 6800 0 0 2 40000 31 1
					 6800 0 0 3 40000 32 1
					 6800 0 0 4 40000 33 1

					/* IDSEL 14*/
					 7000 0 0 1 40000 33 1
					 7000 0 0 2 40000 34 1
					 7000 0 0 3 40000 31 1
					 7000 0 0 4 40000 32 1

					/* IDSEL 15 */
					 7800 0 0 1 40000 32 1
					 7800 0 0 2 40000 33 1
					 7800 0 0 3 40000 34 1
					 7800 0 0 4 40000 31 1

					/* IDSEL 18 */
					 9000 0 0 1 40000 31 1
					 9000 0 0 2 40000 32 1
					 9000 0 0 3 40000 33 1
					 9000 0 0 4 40000 34 1

					/* IDSEL 19 */
					 9800 0 0 1 40000 34 1
					 9800 0 0 2 40000 31 1
					 9800 0 0 3 40000 32 1
					 9800 0 0 4 40000 33 1

					/* IDSEL 20 */
					 a000 0 0 1 40000 33 1
					 a000 0 0 2 40000 34 1
					 a000 0 0 3 40000 31 1
					 a000 0 0 4 40000 32 1

					/* IDSEL 21 */
					 a800 0 0 1 40000 32 1
					 a800 0 0 2 40000 33 1
					 a800 0 0 3 40000 34 1
					 a800 0 0 4 40000 31 1>;

			interrupt-parent = <40000>;
			interrupts = <42 0>;
			bus-range = <0 0>;
			ranges = <02000000 0 80000000 80000000 0 20000000
				  01000000 0 00000000 e2000000 0 01000000>;
		};

		pic@40000 {
			linux,phandle = <40000>;
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
			reg = <40000 20100>;
			built-in;
			device_type = "open-pic";
		};

		cpm@e0000000 {
			linux,phandle = <e0000000>;
			#address-cells = <1>;
			#size-cells = <1>;
			#interrupt-cells = <2>;
			device_type = "cpm";
			model = "CPM2";
			ranges = <0 0 c0000>;
			reg = <80000 40000>;
			command-proc = <919c0>;
			brg-frequency = <9d5b340>;

			pic@90c00 {
				linux,phandle = <90c00>;
				interrupt-controller;
				#address-cells = <0>;
				#interrupt-cells = <2>;
				interrupts = <1e 0>;
				interrupt-parent = <40000>;
				reg = <90c00 80>;
				built-in;
				device_type = "cpm-pic";
			};

			scc@91a00 {
				device_type = "serial";
				compatible = "cpm_uart";
				model = "SCC";
				device-id = <1>;
				reg = <91a00 20 88000 100>;
				clock-setup = <00ffffff 0>;
				rx-clock = <1>;
				tx-clock = <1>;
				current-speed = <1c200>;
				interrupts = <64 1>;
				interrupt-parent = <90c00>;
			};

			scc@91a20 {
				device_type = "serial";
				compatible = "cpm_uart";
				model = "SCC";
				device-id = <2>;
				reg = <91a20 20 88100 100>;
				clock-setup = <ff00ffff 90000>;
				rx-clock = <2>;
				tx-clock = <2>;
				current-speed = <1c200>;
				interrupts = <65 1>;
				interrupt-parent = <90c00>;
			};

			fcc@91320 {
				device_type = "network";
				compatible = "fs_enet";
				model = "FCC";
				device-id = <2>;
				reg = <91320 20 88500 100 913a0 30>;
				mac-address = [ 00 00 0C 00 02 FD ];
				clock-setup = <ff00ffff 250000>;
				rx-clock = <15>;
				tx-clock = <16>;
				interrupts = <5d 1>;
				interrupt-parent = <90c00>;
				phy-handle = <2452002>;
			};

			fcc@91340 {
				device_type = "network";
				compatible = "fs_enet";
				model = "FCC";
				device-id = <3>;
				reg = <91340 20 88600 100 913d0 30>;
				mac-address = [ 00 00 0C 00 03 FD ];
				clock-setup = <ffff00ff 3700>;
				rx-clock = <17>;
				tx-clock = <18>;
				interrupts = <5e 1>;
				interrupt-parent = <90c00>;
				phy-handle = <2452003>;
			};
		};
	};
};
+204 −0
Original line number Original line Diff line number Diff line
#!/bin/sh

# Copyright (C) 2006 Paul Mackerras, IBM Corporation <paulus@samba.org>
# This program may be used under the terms of version 2 of the GNU
# General Public License.

# This script takes a kernel binary and optionally an initrd image
# and/or a device-tree blob, and creates a bootable zImage for a
# given platform.

# Options:
# -o zImage	specify output file
# -p platform	specify platform (links in $platform.o)
# -i initrd	specify initrd file
# -d devtree	specify device-tree blob
# -s tree.dts	specify device-tree source file (needs dtc installed)
# -c		cache $kernel.strip.gz (use if present & newer, else make)
# -C prefix	specify command prefix for cross-building tools
#		(strip, objcopy, ld)
# -D dir	specify directory containing data files used by script
#		(default ./arch/powerpc/boot)
# -W dir	specify working directory for temporary files (default .)

# defaults
kernel=
ofile=zImage
platform=of
initrd=
dtb=
dts=
cacheit=

# cross-compilation prefix
CROSS=

# directory for object and other files used by this script
object=arch/powerpc/boot

# directory for working files
tmpdir=.

usage() {
    echo 'Usage: wrapper [-o output] [-p platform] [-i initrd]' >&2
    echo '       [-d devtree] [-s tree.dts] [-c] [-C cross-prefix]' >&2
    echo '       [-D datadir] [-W workingdir] [vmlinux]' >&2
    exit 1
}

while [ "$#" -gt 0 ]; do
    case "$1" in
    -o)
	shift
	[ "$#" -gt 0 ] || usage
	ofile="$1"
	;;
    -p)
	shift
	[ "$#" -gt 0 ] || usage
	platform="$1"
	;;
    -i)
	shift
	[ "$#" -gt 0 ] || usage
	initrd="$1"
	;;
    -d)
	shift
	[ "$#" -gt 0 ] || usage
	dtb="$1"
	;;
    -s)
	shift
	[ "$#" -gt 0 ] || usage
	dts="$1"
	;;
    -c)
	cacheit=y
	;;
    -C)
	shift
	[ "$#" -gt 0 ] || usage
	CROSS="$1"
	;;
    -D)
	shift
	[ "$#" -gt 0 ] || usage
	object="$1"
	;;
    -W)
	shift
	[ "$#" -gt 0 ] || usage
	tmpdir="$1"
	;;
    -?)
	usage
	;;
    *)
	[ -z "$kernel" ] || usage
	kernel="$1"
	;;
    esac
    shift
done

if [ -n "$dts" ]; then
    if [ -z "$dtb" ]; then
	dtb="$platform.dtb"
    fi
    dtc -O dtb -o "$dtb" -b 0 -V 16 "$dts" || exit 1
fi

if [ -z "$kernel" ]; then
    kernel=vmlinux
fi

platformo=$object/"$platform".o
lds=$object/zImage.lds
ext=strip
objflags=-S
tmp=$tmpdir/zImage.$$.o
ksection=.kernel:vmlinux.strip
isection=.kernel:initrd

case "$platform" in
pmac|pseries|chrp)
    platformo=$object/of.o
    ;;
pmaccoff)
    platformo=$object/of.o
    lds=$object/zImage.coff.lds
    ;;
miboot|uboot)
    # miboot and U-boot want just the bare bits, not an ELF binary
    ext=bin
    objflags="-O binary"
    tmp="$ofile"
    ksection=image
    isection=initrd
    ;;
esac

vmz="$tmpdir/`basename \"$kernel\"`.$ext"
if [ -z "$cacheit" -o ! -f "$vmz.gz" -o "$vmz.gz" -ot "$kernel" ]; then
    ${CROSS}objcopy $objflags "$kernel" "$vmz.$$"
    gzip -f -9 "$vmz.$$"
    if [ -n "$cacheit" ]; then
	mv -f "$vmz.$$.gz" "$vmz.gz"
    else
	vmz="$vmz.$$"
    fi
fi

case "$platform" in
uboot)
    rm -f "$ofile"
    version=`${CROSS}strings "$kernel" | grep '^Linux version [-0-9.]' | \
	cut -d' ' -f3`
    if [ -n "$version" ]; then
	version="-n Linux-$version"
    fi
    mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \
	$version -d "$vmz.gz" "$ofile"
    if [ -z "$cacheit" ]; then
	rm -f $vmz.gz
    fi
    exit 0
    ;;
esac

addsec() {
    ${CROSS}objcopy $4 $1 \
	--add-section=$3="$2" \
	--set-section-flags=$3=contents,alloc,load,readonly,data
}

addsec $tmp "$vmz.gz" $ksection $object/empty.o
if [ -z "$cacheit" ]; then
    rm -f "$vmz.gz"
fi

if [ -n "$initrd" ]; then
    addsec $tmp "$initrd" initrd
fi

if [ -n "$dtb" ]; then
    addsec $tmp "$dtb" dtb
fi

if [ "$platform" != "miboot" ]; then
    ${CROSS}ld -m elf32ppc -T $lds -o "$ofile" \
	$object/crt0.o $platformo $tmp $object/wrapper.a
    rm $tmp
fi

# post-processing needed for some platforms
case "$platform" in
pseries|chrp)
    $object/addnote "$ofile"
    ;;
pmaccoff)
    ${CROSS}objcopy -O aixcoff-rs6000 --set-start 0x500000 "$ofile"
    $object/hack-coff "$ofile"
    ;;
esac
Loading