GIT e9f863b41f15d6f7da59bfd8d22063a6c9745326 git+ssh://master.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6.git#testing commit e9f863b41f15d6f7da59bfd8d22063a6c9745326 Author: Chris Zankel Date: Wed May 7 21:21:59 2008 -0700 [xtensa] Add support for U-Boot and clean-up arch/xtensa/boot Add the 'uImage' target to generate a boot image suitable for U-Boot. This requires that mkuboot.sh (from U-Boot) is in the PATH. Also, clean-up the arch/xtensa/boot directory and bring the Makefile scripts up-to-date. Signed-off-by: Chris Zankel commit 30fde0af14e76a06f959350065168cd476223ff1 Author: Adrian Bunk Date: Mon May 5 21:29:15 2008 +0300 xtensa: remove the nonexisting highmem support Trying to compile an xtensa kernel with CONFIG_HIGHMEM=y fails early and hard: <-- snip --> ... CC init/main.o In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:10, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/buffer_head.h:13, from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:53: /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h: In function 'clear_user_highpage': /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:68: error: implicit declaration of function 'kmap_atomic' /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:68: error: 'KM_USER0' undeclared (first use in this function) /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:68: error: (Each undeclared identifier is reported only once /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:68: error: for each function it appears in.) ... make[2]: *** [init/main.o] Error 1 <-- snip --> This patch removes all traces of highmem support from the xtensa port - highmem support was simply nonexisting. Signed-off-by: Adrian Bunk Signed-off-by: Chris Zankel commit 0452152158a06ff5e0f7d2ce511b6620985f6f0e Author: Johannes Weiner Date: Thu Mar 13 11:45:29 2008 -0700 xtensa: remove redundant display of free swap space in show_mem() Signed-off-by: Johannes Weiner Signed-off-by: Andrew Morton Signed-off-by: Chris Zankel commit 62cb119249e9134f382cf5dc1ec64586b104ad0f Author: Chris Zankel Date: Tue Mar 11 13:59:27 2008 -0700 [XTENSA] More fixes to the build system The platform and processor variant included a trailing space, and the default configuration was missing a configuration option. Signed-off-by: Chris Zankel commit d2ff99e0ef0861cf93b599966cbb06e8b833e113 Author: Chris Zankel Date: Tue Feb 19 10:46:44 2008 -0800 [XTENSA] Fix cross-compiler prefix and cleanup The previous patch expected a specific tripplet for cross compilation: xtensa_-linux-{gnu|uclibc}- and didn't allow the more commong tripplet: xtensa-linux-{gnu|uclibc}-. Also, remove some ancient ramdisk support that has since been integrated into common sources. Signed-off-by: Chris Zankel commit 40e5b80832994938b7909cdcb97014b26369e8a3 Author: Chris Zankel Date: Wed Feb 13 10:47:26 2008 -0800 [XTENSA] Prompt for Xtensa cpu variant name when custom variant selected Among list of supported Xtensa cpu variants is the entry 'custom'. When this is selected, prompt further for the custom variant name. This allows multiple variants to be added in include/asm-xtensa/variant- without other kernel changes. Also make cross-compilation check a bit more consistent with other arches. Should no longer be necessary to specify CROSS_COMPILE on make cmdline. Signed-off-by: Marc Gauthier Signed-off-by: Chris Zankel arch/xtensa/Kconfig | 68 +++-- arch/xtensa/Makefile | 77 ++---- arch/xtensa/boot/Makefile | 78 +++++- arch/xtensa/boot/boot-elf/Makefile | 53 ---- arch/xtensa/boot/boot-elf/boot.lds.S | 73 ----- arch/xtensa/boot/boot-elf/bootstrap.S | 33 --- arch/xtensa/boot/boot-redboot/Makefile | 35 --- arch/xtensa/boot/boot-redboot/boot.ld | 66 ----- arch/xtensa/boot/boot-redboot/bootstrap.S | 259 ------------------ arch/xtensa/boot/boot.lds | 47 ++++ arch/xtensa/boot/bootstrap.S | 406 +++++++++++++++++++++++++++++ arch/xtensa/boot/lib/Makefile | 17 -- arch/xtensa/boot/lib/zmem.c | 79 ------ arch/xtensa/boot/ramdisk/Makefile | 23 -- arch/xtensa/boot/zmem.c | 79 ++++++ arch/xtensa/configs/iss_defconfig | 2 + arch/xtensa/mm/init.c | 9 - include/asm-xtensa/highmem.h | 17 -- 18 files changed, 671 insertions(+), 750 deletions(-) diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index 9fc8551..13395db 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -20,8 +20,8 @@ config XTENSA primarily for embedded systems. These processors are both configurable and extensible. The Linux port to the Xtensa architecture supports all processor configurations and extensions, - with reasonable minimum requirements. The Xtensa Linux project has - a home page at . + with reasonable minimum requirements. The Xtensa Linux project + has a home page at . config RWSEM_XCHGADD_ALGORITHM bool @@ -63,15 +63,37 @@ choice default XTENSA_VARIANT_FSF config XTENSA_VARIANT_FSF - bool "fsf" + bool "fsf - default (not generic) configuration" + +config XTENSA_VARIANT_CUSTOM + bool "Custom Xtensa processor configuration" + help + Select this variant to use a custom Xtensa processor configuration. + You will be prompted for a processor variant name. + endchoice +config XTENSA_VARIANT_CUSTOM_NAME + string "Xtensa Processor Custom Variant Name" + depends on XTENSA_VARIANT_CUSTOM + default "" + help + Provide the name of a custom Xtensa processor variant. + The name should match what was provided to the overlay generation + script. This same NAME selects include/asm-xtensa/variant-NAME + and the xtensa_NAME prefix for the toolchain. + +config XTENSA_VARIANT_NAME + string + default "fsf" if XTENSA_VARIANT_FSF + default XTENSA_VARIANT_CUSTOM_NAME if XTENSA_VARIANT_CUSTOM + config MMU bool default y config XTENSA_UNALIGNED_USER - bool "Unaligned memory access in use space" + bool "Unaligned memory access in user space" ---help--- The Xtensa architecture currently does not handle unaligned memory accesses in hardware but through an exception handler. @@ -97,9 +119,6 @@ config MATH_EMULATION help Can we use information of configuration file? -config HIGHMEM - bool "High memory support" - endmenu menu "Platform options" @@ -119,8 +138,26 @@ config XTENSA_PLATFORM_XT2000 XT2000 is the name of Tensilica's feature-rich emulation platform. This hardware is capable of running a full Linux distribution. +config XTENSA_PLATFORM_CUSTOM + bool "Custom Xtensa platform" + help + Select this variant to use a custom platform. + You will be prompted for a platform name. + endchoice +config XTENSA_PLATFORM_CUSTOM_NAME + string "Custom Platform Name" + depends on XTENSA_PLATFORM_CUSTOM + default "" + help + Provide the name of a custom platform. + +config XTENSA_PLATFORM_NAME + string + default "iss" if XTENSA_PLATFORM_ISS + default XTENSA_PLATFORM_CUSTOM_NAME if XTENSA_PLATFORM_CUSTOM + config XTENSA_CALIBRATE_CCOUNT bool "Auto calibration of the CPU clock rate" @@ -234,23 +271,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -menu "Xtensa initrd options" - depends on BLK_DEV_INITRD - - config EMBEDDED_RAMDISK - bool "Embed root filesystem ramdisk into the kernel" - -config EMBEDDED_RAMDISK_IMAGE - string "Filename of gzipped ramdisk image" - depends on EMBEDDED_RAMDISK - default "ramdisk.gz" - help - This is the filename of the ramdisk image to be built into the - kernel. Relative pathnames are relative to arch/xtensa/boot/ramdisk/. - The ramdisk image is not part of the kernel distribution; you must - provide one yourself. -endmenu - source "arch/xtensa/Kconfig.debug" source "security/Kconfig" diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index 4bd1e14..36f7b15 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile @@ -3,29 +3,19 @@ # License. See the file "COPYING" in the main directory of this archive # for more details. # -# Copyright (C) 2001 - 2005 Tensilica Inc. +# Copyright (C) 2001 - 2008 Tensilica Inc. # # This file is included by the global makefile so that you can add your own # architecture-specific flags and dependencies. Remember to do have actions # for "archclean" and "archdep" for cleaning up and making dependencies for # this architecture -# Core configuration. -# (Use VAR= to use another default compiler.) +# Core and platform configurations -variant-$(CONFIG_XTENSA_VARIANT_FSF) := fsf -variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM) := custom +variant-y := $(strip $(subst ",,$(CONFIG_XTENSA_VARIANT_NAME)))#"))) +platform-y := $(strip $(subst ",,$(CONFIG_XTENSA_PLATFORM_NAME)))#"))) -VARIANT = $(variant-y) -export VARIANT - -# Platform configuration - -platform-$(CONFIG_XTENSA_PLATFORM_XT2000) := xt2000 -platform-$(CONFIG_XTENSA_PLATFORM_ISS) := iss - -PLATFORM = $(platform-y) -export PLATFORM +UTS_MACHINE := xtensa_$(variant-y) # temporarily until string.h is fixed KBUILD_CFLAGS += -ffreestanding @@ -34,65 +24,56 @@ KBUILD_CFLAGS += -pipe -mlongcalls KBUILD_DEFCONFIG := iss_defconfig -# ramdisk/initrd support -# You need a compressed ramdisk image, named ramdisk.gz in -# arch/xtensa/boot/ramdisk - -core-$(CONFIG_EMBEDDED_RAMDISK) += arch/xtensa/boot/ramdisk/ - -# Test for cross compiling - -ifneq ($(VARIANT),) - COMPILE_ARCH = $(shell uname -m) +# Test for cross compiling. Allow xtensa-*-* and xtensa_-*-* - ifneq ($(COMPILE_ARCH), xtensa) - ifndef CROSS_COMPILE - CROSS_COMPILE = xtensa_$(VARIANT)- - endif +ifneq ($(SUBARCH),$(ARCH)) + ifeq ($(CROSS_COMPILE),) + CROSS_COMPILE := $(call cc-cross-prefix, \ + xtensa-linux-uclibc- xtensa_$(variant-y)-linux-uclibc- \ + xtensa-linux-gnu- xtensa_$(variant-y)-linux-gnu-) endif endif -# +# We need to have a 'variant' configured, so exclude this line for +# make config/clean/etc. +ifneq ($(variant-y),) LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) +endif head-y := arch/xtensa/kernel/head.o core-y += arch/xtensa/kernel/ arch/xtensa/mm/ -ifneq ($(PLATFORM),) -core-y += arch/xtensa/platforms/$(PLATFORM)/ +ifneq ($(platform-y),) +core-y += arch/xtensa/platforms/$(platform-y)/ endif libs-y += arch/xtensa/lib/ $(LIBGCC) boot := arch/xtensa/boot - archinc := include/asm-xtensa -archprepare: $(archinc)/.platform +archprepare: $(archinc)/.configured -# Update processor variant and platform symlinks if something which affects -# them changed. +# Update processor variant and platform symlinks if something which affects them changed. -$(archinc)/.platform: $(wildcard include/config/arch/*.h) include/config/auto.conf - @echo ' SYMLINK $(archinc)/variant -> $(archinc)/variant-$(VARIANT)' +$(archinc)/.configured: $(wildcard include/config/arch/*.h) include/config/auto.conf + @echo ' SYMLINK $(archinc)/variant -> $(archinc)/variant-$(variant-y)' $(Q)mkdir -p $(archinc) - $(Q)ln -fsn $(srctree)/$(archinc)/variant-$(VARIANT) $(archinc)/variant - @echo ' SYMLINK $(archinc)/platform -> $(archinc)/platform-$(PLATFORM)' - $(Q)ln -fsn $(srctree)/$(archinc)/platform-$(PLATFORM) $(archinc)/platform + $(Q)ln -fsn $(srctree)/$(archinc)/variant-$(variant-y) $(archinc)/variant + @echo ' SYMLINK $(archinc)/platform -> $(archinc)/platform-$(platform-y)' + $(Q)ln -fsn $(srctree)/$(archinc)/platform-$(platform-y) $(archinc)/platform @touch $@ - all: zImage -bzImage : zImage - -zImage zImage.initrd: vmlinux - $(Q)$(MAKE) $(build)=$(boot) $@ +Image zImage uImage: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ CLEAN_FILES += arch/xtensa/vmlinux.lds \ $(archinc)/platform $(archinc)/variant \ - $(archinc)/.platform + $(archinc)/.configured define archhelp - @echo '* zImage - Compressed kernel image (arch/xtensa/boot/images/zImage.*)' + @echo '* zImage - Compressed kernel image' + @echo '* uImage - Compressed kernel image for U-Boot' endef diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile index 40aa55b..6f55ec7 100644 --- a/arch/xtensa/boot/Makefile +++ b/arch/xtensa/boot/Makefile @@ -7,27 +7,77 @@ # # +BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E -P -) -# KBUILD_CFLAGS used when building rest of boot (takes effect recursively) -KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include -HOSTFLAGS += -Iarch/$(ARCH)/boot/include +ifeq ($(BIG_ENDIAN),1) +OBJCOPY_OFORMAT := -O elf32-xtensa-be +else +OBJCOPY_OFORMAT := -O elf32-xtensa-le +endif -BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") +zobjs-y = inffast.o inflate.o inftrees.o +targets := bootstrap.o zmem.o $(zobjs-y) -export EXTRA_CFLAGS -export BIG_ENDIAN +XTLIB := arch/xtensa/lib/lib.a +LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) -subdir-y := lib +# Files from the zlib library for compressed images -# Subdirs for the boot loader(s) +quiet_cmd_copy_zlib = COPY $@ + cmd_copy_zlib = cat $< > $@ -bootdir-$(CONFIG_XTENSA_PLATFORM_ISS) += boot-elf -bootdir-$(CONFIG_XTENSA_PLATFORM_XT2000) += boot-redboot boot-elf +$(addprefix $(obj)/,$(zobjs-y:.o=.c)): $(obj)/%: $(srctree)/lib/zlib_inflate/% \ + FORCE + $(call if_changed,copy_zlib) +ZOBJS = $(addprefix $(obj)/,$(zobjs-y) zmem.o) +EXTRA_CFLAGS = -Ilib/zlib_inflate -fpic -zImage zImage.initrd Image Image.initrd: $(bootdir-y) +# Binary vmlinux images -$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \ - $(addprefix $(obj)/,$(host-progs)) - $(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS) +OBJCOPYFLAGS_vmlinux.bin := \ + --strip-all -R .comment -R .note.gnu.build-id -O binary +$(obj)/vmlinux.bin: vmlinux FORCE + $(call if_changed,objcopy) + +$(obj)/vmlinuz.bin: $(obj)/vmlinux.bin FORCE + $(call if_changed,gzip) + +# Compressed and uncompressed packaged images + +quiet_cmd_gen_image = IMAGE $@ + cmd_gen_image = \ + echo -e '.section .image,"ax";.incbin "$<"' \ + | $(CC) -c -x assembler -o $(<:.bin=.o) -; \ + $(LD) -pie -T $(srctree)/$(obj)/boot.lds -o $@.tmp \ + $(filter %a %.o,$(^:.bin=.o)); \ + $(OBJCOPY) -O binary $@.tmp $@; \ + rm $(<:.bin=.o) $@.tmp + +# Uncompressed Image + +$(obj)/Image: $(obj)/vmlinux.bin $(obj)/bootstrap.o $(XTLIB) $(LIBGCC) FORCE + $(call if_changed,gen_image) + +# Compressed Image (for RedBoot, for example) + +$(obj)/zImage: $(obj)/vmlinuz.bin $(obj)/bootstrap.o $(ZOBJS) \ + $(XTLIB) $(LIBGCC) FORCE + $(call if_changed,gen_image) + +# U-Boot Image + +MKIMAGE := $(srctree)/scripts/mkuboot.sh + +KERNEL_LOAD = 0xd0001000 +KERNEL_ENTRY = 0xd0001000 + +quiet_cmd_uimage = UIMAGE $@ + cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A xtensa -O linux -T kernel \ + -C gzip -a $(KERNEL_LOAD) -e $(KERNEL_ENTRY) \ + -n 'Linux-$(KERNELRELEASE)' -d $< $@ + +$(obj)/uImage: $(obj)/vmlinuz.bin FORCE + $(call if_changed,uimage) + @echo ' Image $@ is ready.' diff --git a/arch/xtensa/boot/boot-elf/Makefile b/arch/xtensa/boot/boot-elf/Makefile deleted file mode 100644 index 08e8814..0000000 --- a/arch/xtensa/boot/boot-elf/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# - -GZIP = gzip -GZIP_FLAGS = -v9fc - -ifeq ($(BIG_ENDIAN),1) -OBJCOPY_ARGS := -O elf32-xtensa-be -else -OBJCOPY_ARGS := -O elf32-xtensa-le -endif - -export OBJCOPY_ARGS -export CPPFLAGS_boot.lds += -P -C - -boot-y := bootstrap.o - -OBJS := $(addprefix $(obj)/,$(boot-y)) - -Image: vmlinux $(OBJS) arch/$(ARCH)/boot/boot-elf/boot.lds - $(OBJCOPY) --strip-all -R .comment -R .note.gnu.build-id -O binary \ - vmlinux vmlinux.tmp - $(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \ - --add-section image=vmlinux.tmp \ - --set-section-flags image=contents,alloc,load,load,data \ - $(OBJS) $@.tmp - $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) \ - -T arch/$(ARCH)/boot/boot-elf/boot.lds \ - -o arch/$(ARCH)/boot/$@.elf $@.tmp - rm -f $@.tmp vmlinux.tmp - -Image.initrd: vmlinux $(OBJS) - $(OBJCOPY) --strip-all -R .comment -R .note.gnu.build-id -O binary \ - --add-section .initrd=arch/$(ARCH)/boot/ramdisk \ - --set-section-flags .initrd=contents,alloc,load,load,data \ - vmlinux vmlinux.tmp - $(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \ - --add-section image=vmlinux.tmp \ - --set-section-flags image=contents,alloc,load,load,data \ - $(OBJS) $@.tmp - $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) \ - -T $(srctree)/arch/$(ARCH)/boot/boot-elf/boot.ld \ - -o arch/$(ARCH)/boot/$@.elf $@.tmp - rm -f $@.tmp vmlinux.tmp - - -zImage: Image - -zImage.initrd: Image.initrd - diff --git a/arch/xtensa/boot/boot-elf/boot.lds.S b/arch/xtensa/boot/boot-elf/boot.lds.S deleted file mode 100644 index 849dfca..0000000 --- a/arch/xtensa/boot/boot-elf/boot.lds.S +++ /dev/null @@ -1,73 +0,0 @@ -#include -OUTPUT_ARCH(xtensa) -ENTRY(_ResetVector) - -SECTIONS -{ - .start 0xD0000000 : { *(.start) } - - .text 0xD0000000: - { - __reloc_start = . ; - _text_start = . ; - *(.literal .text.literal .text) - _text_end = . ; - } - - .rodata ALIGN(0x04): - { - *(.rodata) - *(.rodata1) - } - - .data ALIGN(0x04): - { - *(.data) - *(.data1) - *(.sdata) - *(.sdata2) - *(.got.plt) - *(.got) - *(.dynamic) - } - - __reloc_end = . ; - - .initrd ALIGN(0x10) : - { - boot_initrd_start = . ; - *(.initrd) - boot_initrd_end = .; - } - - . = ALIGN(0x10); - __image_load = . ; - .image 0xd0001000: - { - _image_start = .; - *(image) - . = (. + 3) & ~ 3; - _image_end = . ; - } - - - .bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3): - { - __bss_start = .; - *(.sbss) - *(.scommon) - *(.dynbss) - *(.bss) - __bss_end = .; - } - _end = .; - _param_start = .; - - .ResetVector.text XCHAL_RESET_VECTOR_VADDR : - { - *(.ResetVector.text) - } - - - PROVIDE (end = .); -} diff --git a/arch/xtensa/boot/boot-elf/bootstrap.S b/arch/xtensa/boot/boot-elf/bootstrap.S deleted file mode 100644 index 464298b..0000000 --- a/arch/xtensa/boot/boot-elf/bootstrap.S +++ /dev/null @@ -1,33 +0,0 @@ - -#include - - -/* ResetVector - */ - .section .ResetVector.text, "ax" - .global _ResetVector -_ResetVector: - _j reset - .align 4 -RomInitAddr: - .word 0xd0001000 -RomBootParam: - .word _bootparam -reset: - l32r a0, RomInitAddr - l32r a2, RomBootParam - movi a3, 0 - movi a4, 0 - jx a0 - - .align 4 - .section .bootstrap.data, "aw" - - .globl _bootparam -_bootparam: - .short BP_TAG_FIRST - .short 4 - .long BP_VERSION - .short BP_TAG_LAST - .short 0 - .long 0 diff --git a/arch/xtensa/boot/boot-redboot/Makefile b/arch/xtensa/boot/boot-redboot/Makefile deleted file mode 100644 index 872029b..0000000 --- a/arch/xtensa/boot/boot-redboot/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# - -GZIP = gzip -GZIP_FLAGS = -v9fc -ifeq ($(BIG_ENDIAN),1) -OBJCOPY_ARGS := -O elf32-xtensa-be -else -OBJCOPY_ARGS := -O elf32-xtensa-le -endif - -LD_ARGS = -T $(srctree)/$(obj)/boot.ld - -boot-y := bootstrap.o - -OBJS := $(addprefix $(obj)/,$(boot-y)) -LIBS := arch/xtensa/boot/lib/lib.a arch/xtensa/lib/lib.a - -LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) - -zImage: vmlinux $(OBJS) $(LIBS) - $(OBJCOPY) --strip-all -R .comment -R .note.gnu.build-id -O binary \ - vmlinux vmlinux.tmp - gzip -vf9 vmlinux.tmp - $(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \ - --add-section image=vmlinux.tmp.gz \ - --set-section-flags image=contents,alloc,load,load,data \ - $(OBJS) $@.tmp - $(LD) $(LD_ARGS) -o $@.elf $@.tmp $(LIBS) -L/xtensa-elf/lib $(LIBGCC) - $(OBJCOPY) -S -O binary $@.elf arch/$(ARCH)/boot/$@.redboot - rm -f $@.tmp $@.elf vmlinux.tmp.gz - diff --git a/arch/xtensa/boot/boot-redboot/boot.ld b/arch/xtensa/boot/boot-redboot/boot.ld deleted file mode 100644 index 774db20..0000000 --- a/arch/xtensa/boot/boot-redboot/boot.ld +++ /dev/null @@ -1,66 +0,0 @@ -OUTPUT_ARCH(xtensa) - -SECTIONS -{ - .start 0xD1000000 : { *(.start) } - - .text : - { - __reloc_start = . ; - _text_start = . ; - *(.literal .text.literal .text) - _text_end = . ; - } - - .rodata ALIGN(0x04): - { - *(.rodata) - *(.rodata1) - } - - .data ALIGN(0x04): - { - *(.data) - *(.data1) - *(.sdata) - *(.sdata2) - *(.got.plt) - *(.got) - *(.dynamic) - } - - __reloc_end = . ; - - .initrd ALIGN(0x10) : - { - boot_initrd_start = . ; - *(.initrd) - boot_initrd_end = .; - } - - . = ALIGN(0x10); - __image_load = . ; - .image 0xd0001000: AT(__image_load) - { - _image_start = .; - *(image) - . = (. + 3) & ~ 3; - _image_end = . ; - } - - - .bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3): - { - __bss_start = .; - *(.sbss) - *(.scommon) - *(.dynbss) - *(.bss) - __bss_end = .; - } - _end = .; - _param_start = .; - - - PROVIDE (end = .); -} diff --git a/arch/xtensa/boot/boot-redboot/bootstrap.S b/arch/xtensa/boot/boot-redboot/bootstrap.S deleted file mode 100644 index 8484812..0000000 --- a/arch/xtensa/boot/boot-redboot/bootstrap.S +++ /dev/null @@ -1,259 +0,0 @@ -#include -#include -#include -#include - /* - * RB-Data: RedBoot data/bss - * P: Boot-Parameters - * L: Kernel-Loader - * - * The Linux-Kernel image including the loader must be loaded - * to a position so that the kernel and the boot parameters - * can fit in the space before the load address. - * ______________________________________________________ - * |_RB-Data_|_P_|__________|_L_|___Linux-Kernel___|______| - * ^ - * ^ Load address - * ______________________________________________________ - * |___Linux-Kernel___|_P_|_L_|___________________________| - * - * The loader copies the parameter to the position that will - * be the end of the kernel and itself to the end of the - * parameter list. - */ - -/* Make sure we have enough space for the 'uncompressor' */ - -#define STACK_SIZE 32768 -#define HEAP_SIZE (131072*4) - - # a2: Parameter list - # a3: Size of parameter list - - .section .start, "ax" - - .globl __start - /* this must be the first byte of the loader! */ -__start: - entry sp, 32 # we do not intend to return - _call0 _start -__start_a0: - .align 4 - - .section .text, "ax" - .begin literal_prefix .text - - /* put literals in here! */ - - .globl _start -_start: - - /* 'reset' window registers */ - - movi a4, 1 - wsr a4, PS - rsync - - rsr a5, WINDOWBASE - ssl a5 - sll a4, a4 - wsr a4, WINDOWSTART - rsync - - movi a4, 0x00040000 - wsr a4, PS - rsync - - /* copy the loader to its address - * Note: The loader itself is a very small piece, so we assume we - * don't partially overlap. We also assume (even more important) - * that the kernel image is out of the way. Usually, when the - * load address of this image is not at an arbitrary address, - * but aligned to some 10K's we shouldn't overlap. - */ - - /* Note: The assembler cannot relax "addi a0, a0, ..." to an - l32r, so we load to a4 first. */ - - # addi a4, a0, __start - __start_a0 - # mov a0, a4 - - movi a4, __start - movi a5, __start_a0 - add a4, a0, a4 - sub a0, a4, a5 - - movi a4, __start - movi a5, __reloc_end - - # a0: address where this code has been loaded - # a4: compiled address of __start - # a5: compiled end address - - mov.n a7, a0 - mov.n a8, a4 - -1: - l32i a10, a7, 0 - l32i a11, a7, 4 - s32i a10, a8, 0 - s32i a11, a8, 4 - l32i a10, a7, 8 - l32i a11, a7, 12 - s32i a10, a8, 8 - s32i a11, a8, 12 - addi a8, a8, 16 - addi a7, a7, 16 - blt a8, a5, 1b - - - /* We have to flush and invalidate the caches here before we jump. */ - -#if XCHAL_DCACHE_IS_WRITEBACK - - ___flush_dcache_all a5 a6 - -#endif - - ___invalidate_icache_all a5 a6 - isync - - movi a11, _reloc - jx a11 - - .globl _reloc -_reloc: - - /* RedBoot is now at the end of the memory, so we don't have - * to copy the parameter list. Keep the code around; in case - * we need it again. */ -#if 0 - # a0: load address - # a2: start address of parameter list - # a3: length of parameter list - # a4: __start - - /* copy the parameter list out of the way */ - - movi a6, _param_start - add a3, a2, a3 -2: - l32i a8, a2, 0 - s32i a8, a6, 0 - addi a2, a2, 4 - addi a6, a6, 4 - blt a2, a3, 2b -#endif - - /* clear BSS section */ - movi a6, __bss_start - movi a7, __bss_end - movi.n a5, 0 -3: - s32i a5, a6, 0 - addi a6, a6, 4 - blt a6, a7, 3b - - movi a5, -16 - movi a1, _stack + STACK_SIZE - and a1, a1, a5 - - /* Uncompress the kernel */ - - # a0: load address - # a2: boot parameter - # a4: __start - - movi a3, __image_load - sub a4, a3, a4 - add a8, a0, a4 - - # a1 Stack - # a8(a4) Load address of the image - - movi a6, _image_start - movi a10, _image_end - movi a7, 0x1000000 - sub a11, a10, a6 - movi a9, complen - s32i a11, a9, 0 - - movi a0, 0 - - # a6 destination - # a7 maximum size of destination - # a8 source - # a9 ptr to length - - .extern gunzip - movi a4, gunzip - beqz a4, 1f - - callx4 a4 - - j 2f - - - # a6 destination start - # a7 maximum size of destination - # a8 source start - # a9 ptr to length - # a10 destination end - -1: - l32i a9, a8, 0 - l32i a11, a8, 4 - s32i a9, a6, 0 - s32i a11, a6, 4 - l32i a9, a8, 8 - l32i a11, a8, 12 - s32i a9, a6, 8 - s32i a11, a6, 12 - addi a6, a6, 16 - addi a8, a8, 16 - blt a6, a10, 1b - - - /* jump to the kernel */ -2: -#if XCHAL_DCACHE_IS_WRITEBACK - - ___flush_dcache_all a5 a6 - -#endif - - ___invalidate_icache_all a5 a6 - - isync - - movi a5, __start - movi a3, boot_initrd_start - movi a4, boot_initrd_end - sub a3, a3, a5 - sub a4, a4, a5 - add a3, a0, a3 - add a4, a0, a4 - - # a2 Boot parameter list - # a3 initrd_start (virtual load address) - # a4 initrd_end (virtual load address) - - movi a0, _image_start - jx a0 - - .align 16 - .data - .globl avail_ram -avail_ram: - .long _heap - .globl end_avail -end_avail: - .long _heap + HEAP_SIZE - - .comm _stack, STACK_SIZE - .comm _heap, HEAP_SIZE - - .globl end_avail - .comm complen, 4 - - .end literal_prefix diff --git a/arch/xtensa/boot/boot.lds b/arch/xtensa/boot/boot.lds new file mode 100644 index 0000000..2e32f39 --- /dev/null +++ b/arch/xtensa/boot/boot.lds @@ -0,0 +1,47 @@ +OUTPUT_ARCH(xtensa) +ENTRY(_start) + +SECTIONS +{ + .text : + { + _text_start = . ; + *(.start) + *(.literal) + *(.rodata) + *(.text) + _text_end = . ; + } + + .data ALIGN(0x04) : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.got.plt) + *(.got) + *(.dynamic) + } + + __rela_dyn_start = .; + .rela.dyn ALIGN(4) : { *(.rela.dyn) } + __rela_dyn_end = .; + + __bss_start = .; + .bss : { *(.bss) } + __bss_end = .; + + . = ALIGN(0x10); + __image_start = . ; + .image : + { + *(.image) + . = (. + 3) & ~ 3; + } + __image_end = . ; + + _end = .; + + PROVIDE (end = .); +} diff --git a/arch/xtensa/boot/bootstrap.S b/arch/xtensa/boot/bootstrap.S new file mode 100644 index 0000000..c05a2be --- /dev/null +++ b/arch/xtensa/boot/bootstrap.S @@ -0,0 +1,406 @@ +#include +#include +#include +#include + +#define KERNEL_IMAGE_LOAD_ADDR 0xd0001000 +#define KERNEL_IMAGE_SIZE 0x10000000 + +/* + * + * Assumptions: + * ROM images + * - The bootstrap software runs at the linked address. + * - .. + * + * RAM + * + * - The bootstrap software can run at any RAM address. + * - There is enough space for the uncompressed kernel image + * at the kernel start address. It doesn't overlap with either the + * bootloader (including the image) or the boot parameters. + + * The following conditions: + * + * - Must be called with callX with PS.WOE=1 and PS.EXCM=0. + * - PS.INTLEVEL should be set to 15 to disable interrupts. + * - Although not used, a1 should be a valid stack pointer. + * - a2 points to the boot-paramter list. + * + */ + +/* The Linux-Kernel image including the loader must be loaded + * to a position so that the kernel and the boot parameters + * can fit in the space before the load address. + */ + +/* Make sure we have enough space for the 'uncompressor' */ + +#define STACK_SIZE 32768 +#define HEAP_SIZE (131072*4) +#define R_XTENSA_RELATIVE 5 + +/* This must be at the start of the image, so we give it its own section. */ + + # a2: Parameter list + # a3: Size of parameter list + + .section .start, "ax" + + .globl __start + +__start: + entry sp, 32 # we do not intend to return + _call0 _start +__start_a0: + + .section .text, "ax" + .begin literal_prefix .text + + .globl _start + .align 4 + +_start: /* Get the 'loadaddr'. Keep it in a0... */ + + movi a4, __start_a0 + sub a0, a0, a4 + + /* 'reset' WINDOWSTART */ + + movi a4, 1 + rsr a5, WINDOWBASE + ssl a5 + sll a4, a4 + wsr a4, WINDOWSTART + rsync + + /* Apply relocations if not running in ROM */ + + movi a4, __rela_dyn_start + movi a5, __rela_dyn_end + + beq a4, a5, 3f + + add a4, a4, a0 # + loadaddr + add a5, a5, a0 # + loadaddr + + /* We currently only know about R_XTENSA_RELATIVE, skip others. */ + +1: l32i a6, a4, 4 # r_info + extui a6, a6, 0, 8 + bnei a6, R_XTENSA_RELATIVE, 2f + + l32i a6, a4, 0 # r_offset + add a6, a6, a0 # + loadaddr + l32i a7, a6, 0 + add a7, a7, a0 + s32i a7, a6, 0 + +2: addi a4, a4, 12 + bne a4, a5, 1b + +3: /* Clear the BSS section. */ + + movi a4, __bss_start + movi a5, __bss_end + #add a4, a4, a0 + #add a5, a5, a0 + movi.n a6, 0 + +1: s32i a6, a4, 0 + addi a4, a4, 4 + blt a4, a5, 1b + + /* Synchronize the caches. */ + +#if XCHAL_DCACHE_IS_WRITEBACK + ___flush_dcache_all a5 a6 +#endif + ___invalidate_icache_all a5 a6 + + /* Set the stack pointer. */ + + // FIXME: movi a1, + + /* Uncompress the kernel */ + + /* + * a0: load address + * a1: stack + * a2: boot parameter + */ + + movi a3, __image_start + movi a4, __image_end +# add a8, a0, a3 # load address for the image + mov a8, a3 + sub a11, a4, a3 # size of the image + + movi a6, KERNEL_IMAGE_LOAD_ADDR + movi a7, KERNEL_IMAGE_SIZE + + movi a9, complen +# add a9, a9, a0 # complen + loadaddr + s32i a11, a9, 0 + + movi a0, 0 + + /* + * a6 (a2) destination + * a7 (a3) maximum size of destination + * a8 (a4) source address + * a9 (a5) ptr to length + * a10 (a6) + * a11 (a7) size of image + */ + + .extern gunzip + movi a4, gunzip + callx4 a4 + j 3f + + +3: /* Synchronize caches. */ + +#if XCHAL_DCACHE_IS_WRITEBACK + ___flush_dcache_all a4 a5 +#endif + ___invalidate_icache_all a4 a5 + isync + + /* + * a1: stack + * a2: boot parameter + */ + + movi a4, KERNEL_IMAGE_LOAD_ADDR + jx a4 + + .globl gunzip + .weak gunzip + .align 4 +gunzip: + + entry a1, 16 + + /* don't uncompress image, simply copy it */ + +2: l32i a5, a4, 0 + l32i a6, a4, 4 + s32i a5, a2, 0 + s32i a6, a2, 4 + addi a4, a4, 8 + addi a2, a2, 8 + addi a7, a7, -8 + bgez a7, 2b + + retw + + .align 16 + .data + .globl avail_ram +avail_ram: + .long _heap + .globl end_avail +end_avail: + .long _heap + HEAP_SIZE + + .comm _stack, STACK_SIZE + .comm _heap, HEAP_SIZE + + .globl end_avail + .comm complen, 4 + + .end literal_prefix + + + + +/* ===================================================================== */ + + +#if 0 + + +#if 0 + + + movi a4, __start + movi a5, __reloc_end + + # a0: address where this code has been loaded + # a4: compiled address of __start + # a5: compiled end address + + mov.n a7, a0 + mov.n a8, a4 + +1: + l32i a10, a7, 0 + l32i a11, a7, 4 + s32i a10, a8, 0 + s32i a11, a8, 4 + l32i a10, a7, 8 + l32i a11, a7, 12 + s32i a10, a8, 8 + s32i a11, a8, 12 + addi a8, a8, 16 + addi a7, a7, 16 + blt a8, a5, 1b + + + /* We have to flush and invalidate the caches here before we jump. */ + +#if XCHAL_DCACHE_IS_WRITEBACK + + ___flush_dcache_all a5 a6 + +#endif + + ___invalidate_icache_all a5 a6 + isync + + movi a11, _reloc + jx a11 + + .globl _reloc +_reloc: +#endif + /* RedBoot is now at the end of the memory, so we don't have + * to copy the parameter list. Keep the code around; in case + * we need it again. */ +#if 0 + # a0: load address + # a2: start address of parameter list + # a3: length of parameter list + # a4: __start + + /* copy the parameter list out of the way */ + + movi a6, _param_start + add a3, a2, a3 +2: + l32i a8, a2, 0 + s32i a8, a6, 0 + addi a2, a2, 4 + addi a6, a6, 4 + blt a2, a3, 2b +#endif + + /* clear BSS section */ + + movi a6, __bss_start + movi a7, __bss_end + movi.n a5, 0 +3: + s32i a5, a6, 0 + addi a6, a6, 4 + blt a6, a7, 3b + + movi a5, -16 + movi a1, _stack + STACK_SIZE + and a1, a1, a5 + + /* Uncompress the kernel */ + + # a0: load address + # a2: boot parameter + # a4: __start + + movi a3, __image_load + sub a4, a3, a4 + add a8, a0, a4 + + # a1 Stack + # a8(a4) Load address of the image + + movi a6, _image_start + movi a10, _image_end + movi a7, 0x1000000 + sub a11, a10, a6 + movi a9, complen + s32i a11, a9, 0 + + movi a0, 0 + + # a6 destination + # a7 maximum size of destination + # a8 source + # a9 ptr to length + + .extern gunzip + movi a4, gunzip + beqz a4, 1f + + callx4 a4 + + j 2f + + + # a6 destination start + # a7 maximum size of destination + # a8 source start + # a9 ptr to length + # a10 destination end + +1: + l32i a9, a8, 0 + l32i a11, a8, 4 + s32i a9, a6, 0 + s32i a11, a6, 4 + l32i a9, a8, 8 + l32i a11, a8, 12 + s32i a9, a6, 8 + s32i a11, a6, 12 + addi a6, a6, 16 + addi a8, a8, 16 + blt a6, a10, 1b + + + /* jump to the kernel */ +2: +#if XCHAL_DCACHE_IS_WRITEBACK + + ___flush_dcache_all a5 a6 + +#endif + + ___invalidate_icache_all a5 a6 + + isync + + movi a5, __start + #movi a3, boot_initrd_start + #movi a4, boot_initrd_end + sub a3, a3, a5 + sub a4, a4, a5 + add a3, a0, a3 + add a4, a0, a4 + + # a2 Boot parameter list + # a3 initrd_start (virtual load address) + # a4 initrd_end (virtual load address) + + movi a0, _image_start + jx a0 + + .align 16 + .data + .globl avail_ram +avail_ram: + .long _heap + .globl end_avail +end_avail: + .long _heap + HEAP_SIZE + + + .comm _stack, STACK_SIZE + .comm _heap, HEAP_SIZE + + .globl end_avail + .comm complen, 4 + + .end literal_prefix + + +#endif diff --git a/arch/xtensa/boot/lib/Makefile b/arch/xtensa/boot/lib/Makefile deleted file mode 100644 index d3d2aa2..0000000 --- a/arch/xtensa/boot/lib/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Makefile for some libs needed by zImage. -# - -zlib := inffast.c inflate.c inftrees.c - -lib-y += $(zlib:.c=.o) zmem.o - -EXTRA_CFLAGS += -Ilib/zlib_inflate - -quiet_cmd_copy_zlib = COPY $@ - cmd_copy_zlib = cat $< > $@ - -$(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% - $(call cmd,copy_zlib) - -clean-files := $(zlib) diff --git a/arch/xtensa/boot/lib/zmem.c b/arch/xtensa/boot/lib/zmem.c deleted file mode 100644 index d9862aa..0000000 --- a/arch/xtensa/boot/lib/zmem.c +++ /dev/null @@ -1,79 +0,0 @@ -#include - -/* bits taken from ppc */ - -extern void *avail_ram, *end_avail; - -void exit (void) -{ - for (;;); -} - -void *zalloc(unsigned size) -{ - void *p = avail_ram; - - size = (size + 7) & -8; - avail_ram += size; - if (avail_ram > end_avail) { - //puts("oops... out of memory\n"); - //pause(); - exit (); - } - return p; -} - -#define HEAD_CRC 2 -#define EXTRA_FIELD 4 -#define ORIG_NAME 8 -#define COMMENT 0x10 -#define RESERVED 0xe0 - -#define DEFLATED 8 - -void gunzip (void *dst, int dstlen, unsigned char *src, int *lenp) -{ - z_stream s; - int r, i, flags; - - /* skip header */ - i = 10; - flags = src[3]; - if (src[2] != DEFLATED || (flags & RESERVED) != 0) { - //puts("bad gzipped data\n"); - exit(); - } - if ((flags & EXTRA_FIELD) != 0) - i = 12 + src[10] + (src[11] << 8); - if ((flags & ORIG_NAME) != 0) - while (src[i++] != 0) - ; - if ((flags & COMMENT) != 0) - while (src[i++] != 0) - ; - if ((flags & HEAD_CRC) != 0) - i += 2; - if (i >= *lenp) { - //puts("gunzip: ran out of data in header\n"); - exit(); - } - - s.workspace = zalloc(zlib_inflate_workspacesize()); - r = zlib_inflateInit2(&s, -MAX_WBITS); - if (r != Z_OK) { - //puts("inflateInit2 returned "); puthex(r); puts("\n"); - exit(); - } - s.next_in = src + i; - s.avail_in = *lenp - i; - s.next_out = dst; - s.avail_out = dstlen; - r = zlib_inflate(&s, Z_FINISH); - if (r != Z_OK && r != Z_STREAM_END) { - //puts("inflate returned "); puthex(r); puts("\n"); - exit(); - } - *lenp = s.next_out - (unsigned char *) dst; - zlib_inflateEnd(&s); -} - diff --git a/arch/xtensa/boot/ramdisk/Makefile b/arch/xtensa/boot/ramdisk/Makefile deleted file mode 100644 index b12f763..0000000 --- a/arch/xtensa/boot/ramdisk/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# -# Makefile for a ramdisk image -# - -BIG_ENDIAN := $(shell echo -e "\#ifdef __XTENSA_EL__\nint little;\n\#else\nint big;\n\#endif" | $(CC) -E -|grep -c big) - -ifeq ($(BIG_ENDIAN),1) -OBJCOPY_ARGS := -O elf32-xtensa-be -else -OBJCOPY_ARGS := -O elf32-xtensa-le -endif - -obj-y = ramdisk.o - -RAMDISK_IMAGE = arch/$(ARCH)/boot/ramdisk/$(CONFIG_EMBEDDED_RAMDISK_IMAGE) - -arch/$(ARCH)/boot/ramdisk/ramdisk.o: - $(Q)echo -e "dummy:" | $(AS) -o $@; - $(Q)$(OBJCOPY) $(OBJCOPY_ARGS) \ - --add-section .initrd=$(RAMDISK_IMAGE) \ - --set-section-flags .initrd=contents,alloc,load,load,data \ - arch/$(ARCH)/boot/ramdisk/ramdisk.o $@ - diff --git a/arch/xtensa/boot/zmem.c b/arch/xtensa/boot/zmem.c new file mode 100644 index 0000000..d9862aa --- /dev/null +++ b/arch/xtensa/boot/zmem.c @@ -0,0 +1,79 @@ +#include + +/* bits taken from ppc */ + +extern void *avail_ram, *end_avail; + +void exit (void) +{ + for (;;); +} + +void *zalloc(unsigned size) +{ + void *p = avail_ram; + + size = (size + 7) & -8; + avail_ram += size; + if (avail_ram > end_avail) { + //puts("oops... out of memory\n"); + //pause(); + exit (); + } + return p; +} + +#define HEAD_CRC 2 +#define EXTRA_FIELD 4 +#define ORIG_NAME 8 +#define COMMENT 0x10 +#define RESERVED 0xe0 + +#define DEFLATED 8 + +void gunzip (void *dst, int dstlen, unsigned char *src, int *lenp) +{ + z_stream s; + int r, i, flags; + + /* skip header */ + i = 10; + flags = src[3]; + if (src[2] != DEFLATED || (flags & RESERVED) != 0) { + //puts("bad gzipped data\n"); + exit(); + } + if ((flags & EXTRA_FIELD) != 0) + i = 12 + src[10] + (src[11] << 8); + if ((flags & ORIG_NAME) != 0) + while (src[i++] != 0) + ; + if ((flags & COMMENT) != 0) + while (src[i++] != 0) + ; + if ((flags & HEAD_CRC) != 0) + i += 2; + if (i >= *lenp) { + //puts("gunzip: ran out of data in header\n"); + exit(); + } + + s.workspace = zalloc(zlib_inflate_workspacesize()); + r = zlib_inflateInit2(&s, -MAX_WBITS); + if (r != Z_OK) { + //puts("inflateInit2 returned "); puthex(r); puts("\n"); + exit(); + } + s.next_in = src + i; + s.avail_in = *lenp - i; + s.next_out = dst; + s.avail_out = dstlen; + r = zlib_inflate(&s, Z_FINISH); + if (r != Z_OK && r != Z_STREAM_END) { + //puts("inflate returned "); puthex(r); puts("\n"); + exit(); + } + *lenp = s.next_out - (unsigned char *) dst; + zlib_inflateEnd(&s); +} + diff --git a/arch/xtensa/configs/iss_defconfig b/arch/xtensa/configs/iss_defconfig index f198540..68f7631 100644 --- a/arch/xtensa/configs/iss_defconfig +++ b/arch/xtensa/configs/iss_defconfig @@ -54,6 +54,7 @@ CONFIG_CC_ALIGN_JUMPS=0 # Processor type and features # CONFIG_XTENSA_VARIANT_FSF=y +CONFIG_XTENSA_VARIANT_NAME="iss" CONFIG_MMU=y # CONFIG_XTENSA_UNALIGNED_USER is not set # CONFIG_PREEMPT is not set @@ -67,6 +68,7 @@ CONFIG_XTENSA_PLATFORM_ISS=y # CONFIG_XTENSA_PLATFORM_XT2000 is not set # CONFIG_XTENSA_PLATFORM_ARUBA is not set # CONFIG_XTENSA_CALIBRATE_CCOUNT is not set +CONFIG_XTENSA_PLATFORM_NAME="iss" CONFIG_XTENSA_CPU_CLOCK=10 # CONFIG_GENERIC_CALIBRATE_DELAY is not set CONFIG_CMDLINE_BOOL=y diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index 81d0560..aa1f950 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c @@ -169,10 +169,6 @@ void __init paging_init(void) for (i = 1; i < MAX_NR_ZONES; i++) zones_size[i] = 0; -#ifdef CONFIG_HIGHMEM - zones_size[ZONE_HIGHMEM] = max_pfn - max_low_pfn; -#endif - /* Initialize the kernel's page tables. */ memset(swapper_pg_dir, 0, PAGE_SIZE); @@ -222,10 +218,6 @@ void __init mem_init(void) high_memory = (void *) __va(max_mapnr << PAGE_SHIFT); highmemsize = 0; -#ifdef CONFIG_HIGHMEM -#error HIGHGMEM not implemented in init.c -#endif - totalram_pages += free_all_bootmem(); reservedpages = ram = 0; @@ -287,7 +279,6 @@ void show_mem(void) printk("Mem-info:\n"); show_free_areas(); - printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); i = max_mapnr; while (i-- > 0) { total++; diff --git a/include/asm-xtensa/highmem.h b/include/asm-xtensa/highmem.h deleted file mode 100644 index 0a046ca..0000000 --- a/include/asm-xtensa/highmem.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * include/asm-xtensa/highmem.h - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file "COPYING" in the main directory of - * this archive for more details. - * - * Copyright (C) 2003 - 2005 Tensilica Inc. - */ - -#ifndef _XTENSA_HIGHMEM_H -#define _XTENSA_HIGHMEM_H - -extern void flush_cache_kmaps(void); - -#endif -