Commit 3e41d652 authored by Mikael Starvik's avatar Mikael Starvik Committed by Linus Torvalds

[PATCH] CRIS update: configuration and build

Changes to configuration and build system.

* Added v32 sub architecture.
* Use generic hard IRQ.
* Added SMP options.
* Added options to OOPS at NMI and reboot at OOM.
* Made it possible to set objtree.
* Added option to select Kernel GDB serial port.
* Corrected Kconfig usage.
* Added system profiler.
Signed-off-by: default avatarMikael Starvik <starvik@axis.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent cb09f540
...@@ -38,4 +38,9 @@ config FRAME_POINTER ...@@ -38,4 +38,9 @@ config FRAME_POINTER
If you don't debug the kernel, you can say N, but we may not be able If you don't debug the kernel, you can say N, but we may not be able
to solve problems without frame pointers. to solve problems without frame pointers.
config DEBUG_NMI_OOPS
bool "NMI causes oops printout"
help
If the system locks up without any debug information you can say Y
here to make it possible to dump an OOPS with an external NMI.
endmenu endmenu
# $Id: Makefile,v 1.23 2004/10/19 13:07:34 starvik Exp $ # $Id: Makefile,v 1.28 2005/03/17 10:44:37 larsv Exp $
# cris/Makefile # cris/Makefile
# #
# This file is included by the global makefile so that you can add your own # This file is included by the global makefile so that you can add your own
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
arch-y := v10 arch-y := v10
arch-$(CONFIG_ETRAX_ARCH_V10) := v10 arch-$(CONFIG_ETRAX_ARCH_V10) := v10
arch-$(CONFIG_ETRAX_ARCH_V32) := v32
# No config avaiable for make clean etc # No config avaiable for make clean etc
ifneq ($(arch-y),) ifneq ($(arch-y),)
...@@ -46,6 +47,21 @@ core-y += arch/$(ARCH)/$(SARCH)/kernel/ arch/$(ARCH)/$(SARCH)/mm/ ...@@ -46,6 +47,21 @@ core-y += arch/$(ARCH)/$(SARCH)/kernel/ arch/$(ARCH)/$(SARCH)/mm/
drivers-y += arch/$(ARCH)/$(SARCH)/drivers/ drivers-y += arch/$(ARCH)/$(SARCH)/drivers/
libs-y += arch/$(ARCH)/$(SARCH)/lib/ $(LIBGCC) libs-y += arch/$(ARCH)/$(SARCH)/lib/ $(LIBGCC)
# cris source path
SRC_ARCH = $(srctree)/arch/$(ARCH)
# cris object files path
OBJ_ARCH = $(objtree)/arch/$(ARCH)
target_boot_arch_dir = $(OBJ_ARCH)/$(SARCH)/boot
target_boot_dir = $(OBJ_ARCH)/boot
src_boot_dir = $(SRC_ARCH)/boot
target_compressed_dir = $(OBJ_ARCH)/boot/compressed
src_compressed_dir = $(SRC_ARCH)/boot/compressed
target_rescue_dir = $(OBJ_ARCH)/boot/rescue
src_rescue_dir = $(SRC_ARCH)/boot/rescue
export target_boot_arch_dir target_boot_dir src_boot_dir target_compressed_dir src_compressed_dir target_rescue_dir src_rescue_dir
vmlinux.bin: vmlinux vmlinux.bin: vmlinux
$(OBJCOPY) $(OBJCOPYFLAGS) vmlinux vmlinux.bin $(OBJCOPY) $(OBJCOPYFLAGS) vmlinux vmlinux.bin
...@@ -65,44 +81,52 @@ cramfs: ...@@ -65,44 +81,52 @@ cramfs:
clinux: vmlinux.bin decompress.bin rescue.bin clinux: vmlinux.bin decompress.bin rescue.bin
decompress.bin: FORCE decompress.bin: $(target_boot_dir)
@make -C arch/$(ARCH)/boot/compressed decompress.bin @$(MAKE) -f $(src_compressed_dir)/Makefile $(target_compressed_dir)/decompress.bin
rescue.bin: FORCE $(target_rescue_dir)/rescue.bin: $(target_boot_dir)
@make -C arch/$(ARCH)/boot/rescue rescue.bin @$(MAKE) -f $(src_rescue_dir)/Makefile $(target_rescue_dir)/rescue.bin
zImage: vmlinux.bin rescue.bin zImage: $(target_boot_dir) vmlinux.bin $(target_rescue_dir)/rescue.bin
## zImage - Compressed kernel (gzip) ## zImage - Compressed kernel (gzip)
@make -C arch/$(ARCH)/boot/ zImage @$(MAKE) -f $(src_boot_dir)/Makefile zImage
$(target_boot_dir): $(target_boot_arch_dir)
ln -sfn $< $@
$(target_boot_arch_dir):
mkdir -p $@
compressed: zImage compressed: zImage
archmrproper: archmrproper:
archclean: archclean:
$(Q)$(MAKE) $(clean)=arch/$(ARCH)/boot @if [ -d arch/$(ARCH)/boot ]; then \
$(MAKE) $(clean)=arch/$(ARCH)/boot ; \
fi
rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img
rm -rf $(LD_SCRIPT).tmp rm -rf $(LD_SCRIPT).tmp
prepare: arch/$(ARCH)/.links include/asm-$(ARCH)/.arch \ prepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch \
include/asm-$(ARCH)/$(SARCH)/offset.h include/asm-$(ARCH)/$(SARCH)/offset.h
# Create some links to make all tools happy # Create some links to make all tools happy
arch/$(ARCH)/.links: $(SRC_ARCH)/.links:
@rm -rf arch/$(ARCH)/drivers @rm -rf $(SRC_ARCH)/drivers
@ln -sfn $(SARCH)/drivers arch/$(ARCH)/drivers @ln -sfn $(SRC_ARCH)/$(SARCH)/drivers $(SRC_ARCH)/drivers
@rm -rf arch/$(ARCH)/boot @rm -rf $(SRC_ARCH)/boot
@ln -sfn $(SARCH)/boot arch/$(ARCH)/boot @ln -sfn $(SRC_ARCH)/$(SARCH)/boot $(SRC_ARCH)/boot
@rm -rf arch/$(ARCH)/lib @rm -rf $(SRC_ARCH)/lib
@ln -sfn $(SARCH)/lib arch/$(ARCH)/lib @ln -sfn $(SRC_ARCH)/$(SARCH)/lib $(SRC_ARCH)/lib
@ln -sfn $(SARCH) arch/$(ARCH)/arch @ln -sfn $(SRC_ARCH)/$(SARCH) $(SRC_ARCH)/arch
@ln -sfn ../$(SARCH)/vmlinux.lds.S arch/$(ARCH)/kernel/vmlinux.lds.S @ln -sfn $(SRC_ARCH)/$(SARCH)/vmlinux.lds.S $(SRC_ARCH)/kernel/vmlinux.lds.S
@touch $@ @touch $@
# Create link to sub arch includes # Create link to sub arch includes
include/asm-$(ARCH)/.arch: $(wildcard include/config/arch/*.h) $(srctree)/include/asm-$(ARCH)/.arch: $(wildcard include/config/arch/*.h)
@echo ' Making asm-$(ARCH)/arch -> asm-$(ARCH)/$(SARCH) symlink' @echo ' Making $(srctree)/include/asm-$(ARCH)/arch -> $(srctree)/include/asm-$(ARCH)/$(SARCH) symlink'
@rm -f include/asm-$(ARCH)/arch @rm -f include/asm-$(ARCH)/arch
@ln -sf $(SARCH) include/asm-$(ARCH)/arch @ln -sf $(srctree)/include/asm-$(ARCH)/$(SARCH) $(srctree)/include/asm-$(ARCH)/arch
@touch $@ @touch $@
arch/$(ARCH)/$(SARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ arch/$(ARCH)/$(SARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \
......
...@@ -259,6 +259,37 @@ config ETRAX_DEBUG_PORT_NULL ...@@ -259,6 +259,37 @@ config ETRAX_DEBUG_PORT_NULL
endchoice endchoice
choice
prompt "Kernel GDB port"
depends on ETRAX_KGDB
default ETRAX_KGDB_PORT0
help
Choose a serial port for kernel debugging. NOTE: This port should
not be enabled under Drivers for built-in interfaces (as it has its
own initialization code) and should not be the same as the debug port.
config ETRAX_KGDB_PORT0
bool "Serial-0"
help
Use serial port 0 for kernel debugging.
config ETRAX_KGDB_PORT1
bool "Serial-1"
help
Use serial port 1 for kernel debugging.
config ETRAX_KGDB_PORT2
bool "Serial-2"
help
Use serial port 2 for kernel debugging.
config ETRAX_KGDB_PORT3
bool "Serial-3"
help
Use serial port 3 for kernel debugging.
endchoice
choice choice
prompt "Product rescue-port" prompt "Product rescue-port"
depends on ETRAX_ARCH_V10 depends on ETRAX_ARCH_V10
......
# #
# arch/cris/boot/Makefile # arch/cris/boot/Makefile
# #
target = $(target_boot_dir)
src = $(src_boot_dir)
zImage: compressed/vmlinuz zImage: compressed/vmlinuz
compressed/vmlinuz: $(TOPDIR)/vmlinux compressed/vmlinuz:
@$(MAKE) -C compressed vmlinuz @$(MAKE) -f $(src)/compressed/Makefile $(target_compressed_dir)/vmlinuz
clean: clean:
rm -f zImage tools/build compressed/vmlinux.out @$(MAKE) -f $(src)/compressed/Makefile clean
@$(MAKE) -C compressed clean
# #
# linux/arch/etrax100/boot/compressed/Makefile # create a compressed vmlinuz image from the binary vmlinux.bin file
#
# create a compressed vmlinux image from the original vmlinux files and romfs
# #
target = $(target_compressed_dir)
src = $(src_compressed_dir)
CC = gcc-cris -melf -I $(TOPDIR)/include CC = gcc-cris -melf $(LINUXINCLUDE)
CFLAGS = -O2 CFLAGS = -O2
LD = ld-cris LD = ld-cris
OBJCOPY = objcopy-cris OBJCOPY = objcopy-cris
OBJCOPYFLAGS = -O binary --remove-section=.bss OBJCOPYFLAGS = -O binary --remove-section=.bss
OBJECTS = head.o misc.o OBJECTS = $(target)/head.o $(target)/misc.o
# files to compress # files to compress
SYSTEM = $(TOPDIR)/vmlinux.bin SYSTEM = $(objtree)/vmlinux.bin
all: vmlinuz all: $(target_compressed_dir)/vmlinuz
decompress.bin: $(OBJECTS) $(target)/decompress.bin: $(OBJECTS)
$(LD) -T decompress.ld -o decompress.o $(OBJECTS) $(LD) -T $(src)/decompress.ld -o $(target)/decompress.o $(OBJECTS)
$(OBJCOPY) $(OBJCOPYFLAGS) decompress.o decompress.bin $(OBJCOPY) $(OBJCOPYFLAGS) $(target)/decompress.o $(target)/decompress.bin
# save it for mkprod in the topdir.
cp decompress.bin $(TOPDIR)
# Create vmlinuz image in top-level build directory
$(target_compressed_dir)/vmlinuz: $(target) piggy.img $(target)/decompress.bin
@echo " COMPR vmlinux.bin --> vmlinuz"
@cat $(target)/decompress.bin piggy.img > $(target_compressed_dir)/vmlinuz
@rm -f piggy.img
vmlinuz: piggy.img decompress.bin $(target)/head.o: $(src)/head.S
cat decompress.bin piggy.img > vmlinuz $(CC) -D__ASSEMBLY__ -traditional -c $< -o $@
rm -f piggy.img
head.o: head.S $(target)/misc.o: $(src)/misc.c
$(CC) -D__ASSEMBLY__ -traditional -c head.S -o head.o $(CC) -D__KERNEL__ -c $< -o $@
# gzip the kernel image # gzip the kernel image
piggy.img: $(SYSTEM) piggy.img: $(SYSTEM)
cat $(SYSTEM) | gzip -f -9 > piggy.img @cat $(SYSTEM) | gzip -f -9 > piggy.img
$(target):
mkdir -p $(target)
clean: clean:
rm -f piggy.img vmlinuz vmlinuz.o rm -f piggy.img $(objtree)/vmlinuz
# #
# Makefile for rescue code # Makefile for rescue code
# #
ifndef TOPDIR target = $(target_rescue_dir)
TOPDIR = ../../../.. src = $(src_rescue_dir)
endif
CC = gcc-cris -mlinux -I $(TOPDIR)/include CC = gcc-cris -mlinux $(LINUXINCLUDE)
CFLAGS = -O2 CFLAGS = -O2
LD = gcc-cris -mlinux -nostdlib LD = gcc-cris -mlinux -nostdlib
OBJCOPY = objcopy-cris OBJCOPY = objcopy-cris
OBJCOPYFLAGS = -O binary --remove-section=.bss OBJCOPYFLAGS = -O binary --remove-section=.bss
all: rescue.bin testrescue.bin kimagerescue.bin all: $(target)/rescue.bin $(target)/testrescue.bin $(target)/kimagerescue.bin
rescue: rescue.bin
# do nothing
rescue.bin: head.o $(target)/rescue.bin: $(target) $(target)/head.o
$(LD) -T rescue.ld -o rescue.o head.o $(LD) -T $(src)/rescue.ld -o $(target)/rescue.o $(target)/head.o
$(OBJCOPY) $(OBJCOPYFLAGS) rescue.o rescue.bin $(OBJCOPY) $(OBJCOPYFLAGS) $(target)/rescue.o $(target)/rescue.bin
cp rescue.bin $(TOPDIR) # Place a copy in top-level build directory
cp -p $(target)/rescue.bin $(objtree)
testrescue.bin: testrescue.o $(target)/testrescue.bin: $(target) $(target)/testrescue.o
$(OBJCOPY) $(OBJCOPYFLAGS) testrescue.o tr.bin $(OBJCOPY) $(OBJCOPYFLAGS) $(target)/testrescue.o tr.bin
# Pad it to 784 bytes # Pad it to 784 bytes
dd if=/dev/zero of=tmp2423 bs=1 count=784 dd if=/dev/zero of=tmp2423 bs=1 count=784
cat tr.bin tmp2423 >testrescue_tmp.bin cat tr.bin tmp2423 >testrescue_tmp.bin
dd if=testrescue_tmp.bin of=testrescue.bin bs=1 count=784 dd if=testrescue_tmp.bin of=$(target)/testrescue.bin bs=1 count=784
rm tr.bin tmp2423 testrescue_tmp.bin rm tr.bin tmp2423 testrescue_tmp.bin
kimagerescue.bin: kimagerescue.o $(target)/kimagerescue.bin: $(target) $(target)/kimagerescue.o
$(OBJCOPY) $(OBJCOPYFLAGS) kimagerescue.o ktr.bin $(OBJCOPY) $(OBJCOPYFLAGS) $(target)/kimagerescue.o ktr.bin
# Pad it to 784 bytes, that's what the rescue loader expects # Pad it to 784 bytes, that's what the rescue loader expects
dd if=/dev/zero of=tmp2423 bs=1 count=784 dd if=/dev/zero of=tmp2423 bs=1 count=784
cat ktr.bin tmp2423 >kimagerescue_tmp.bin cat ktr.bin tmp2423 >kimagerescue_tmp.bin
dd if=kimagerescue_tmp.bin of=kimagerescue.bin bs=1 count=784 dd if=kimagerescue_tmp.bin of=$(target)/kimagerescue.bin bs=1 count=784
rm ktr.bin tmp2423 kimagerescue_tmp.bin rm ktr.bin tmp2423 kimagerescue_tmp.bin
head.o: head.S $(target):
mkdir -p $(target)
$(target)/head.o: $(src)/head.S
$(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o $(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o
testrescue.o: testrescue.S $(target)/testrescue.o: $(src)/testrescue.S
$(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o $(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o
kimagerescue.o: kimagerescue.S $(target)/kimagerescue.o: $(src)/kimagerescue.S
$(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o $(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o
clean: clean:
rm -f *.o *.bin rm -f $(target)/*.o $(target)/*.bin
fastdep: fastdep:
......
This diff is collapsed.
This diff is collapsed.
# $Id: Makefile,v 1.10 2004/05/14 10:18:12 starvik Exp $ # $Id: Makefile,v 1.12 2004/10/19 13:07:43 starvik Exp $
# #
# Makefile for the linux kernel. # Makefile for the linux kernel.
# #
...@@ -10,6 +10,7 @@ obj-y := process.o traps.o irq.o ptrace.o setup.o \ ...@@ -10,6 +10,7 @@ obj-y := process.o traps.o irq.o ptrace.o setup.o \
obj-$(CONFIG_MODULES) += crisksyms.o obj-$(CONFIG_MODULES) += crisksyms.o
obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_SYSTEM_PROFILER) += profile.o
clean: clean:
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