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

Commit c278400c authored by Aurelien Jacquiot's avatar Aurelien Jacquiot Committed by Mark Salter
Browse files

C6X: build infrastructure



Original port to early 2.6 kernel using TI COFF toolchain.
Brought up to date by Mark Salter <msalter@redhat.com>

Signed-off-by: default avatarAurelien Jacquiot <a-jacquiot@ti.com>
Signed-off-by: default avatarMark Salter <msalter@redhat.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
parent e66d3c49
Loading
Loading
Loading
Loading

arch/c6x/Kconfig

0 → 100644
+174 −0
Original line number Original line Diff line number Diff line
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#

config TMS320C6X
	def_bool y
	select CLKDEV_LOOKUP
	select GENERIC_IRQ_SHOW
	select HAVE_ARCH_TRACEHOOK
	select HAVE_DMA_API_DEBUG
	select HAVE_GENERIC_HARDIRQS
	select HAVE_MEMBLOCK
	select HAVE_SPARSE_IRQ
	select OF
	select OF_EARLY_FLATTREE

config MMU
	def_bool n

config ZONE_DMA
	def_bool y

config FPU
	def_bool n

config HIGHMEM
	def_bool n

config NUMA
	def_bool n

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	def_bool n

config GENERIC_CALIBRATE_DELAY
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_CLOCKEVENTS
	def_bool y

config GENERIC_CLOCKEVENTS_BROADCAST
	bool

config GENERIC_BUG
	def_bool y

config COMMON_CLKDEV
	def_bool y

config C6X_BIG_KERNEL
	bool "Build a big kernel"
	help
	  The C6X function call instruction has a limited range of +/- 2MiB.
	  This is sufficient for most kernels, but some kernel configurations
	  with lots of compiled-in functionality may require a larger range
	  for function calls. Use this option to have the compiler generate
	  function calls with 32-bit range. This will make the kernel both
	  larger and slower.

	  If unsure, say N.

source "init/Kconfig"

# Use the generic interrupt handling code in kernel/irq/

source "kernel/Kconfig.freezer"

config CMDLINE_BOOL
	bool "Default bootloader kernel arguments"

config CMDLINE
	string "Kernel command line"
	depends on CMDLINE_BOOL
	default "console=ttyS0,57600"
	help
	  On some architectures there is currently no way for the boot loader
	  to pass arguments to the kernel. For these architectures, you should
	  supply some command-line options at build time by entering them
	  here.

config CMDLINE_FORCE
	bool "Force default kernel command string"
	depends on CMDLINE_BOOL
	default n
	help
	  Set this to have arguments from the default kernel command string
	  override those passed by the boot loader.

config CPU_BIG_ENDIAN
	bool "Build big-endian kernel"
	default n
	help
	  Say Y if you plan on running a kernel in big-endian mode.
	  Note that your board must be properly built and your board
	  port must properly enable any big-endian related features
	  of your chipset/board/processor.

config FORCE_MAX_ZONEORDER
	int "Maximum zone order"
	default "13"
	help
	  The kernel memory allocator divides physically contiguous memory
	  blocks into "zones", where each zone is a power of two number of
	  pages.  This option selects the largest power of two that the kernel
	  keeps in the memory allocator.  If you need to allocate very large
	  blocks of physically contiguous memory, then you may need to
	  increase this value.

	  This config option is actually maximum order plus one. For example,
	  a value of 11 means that the largest free memory block is 2^10 pages.

menu "Processor type and features"

source "arch/c6x/platforms/Kconfig"

config TMS320C6X_CACHES_ON
	bool "L2 cache support"
	default y

config KERNEL_RAM_BASE_ADDRESS
	hex "Virtual address of memory base"
	default 0xe0000000 if SOC_TMS320C6455
	default 0xe0000000 if SOC_TMS320C6457
	default 0xe0000000 if SOC_TMS320C6472
	default 0x80000000

source "mm/Kconfig"

source "kernel/Kconfig.preempt"

source "kernel/Kconfig.hz"
source "kernel/time/Kconfig"

endmenu

menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"

menu "Kernel hacking"

source "lib/Kconfig.debug"

config ACCESS_CHECK
	bool "Check the user pointer address"
	default y
	help
	  Usually the pointer transfer from user space is checked to see if its
	  address is in the kernel space.

	  Say N here to disable that check to improve the performance.

endmenu

arch/c6x/Makefile

0 → 100644
+60 −0
Original line number Original line Diff line number Diff line
#
# linux/arch/c6x/Makefile
#
# 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.
#

cflags-y += -mno-dsbt -msdata=none

cflags-$(CONFIG_C6X_BIG_KERNEL) += -mlong-calls

CFLAGS_MODULE   += -mlong-calls -mno-dsbt -msdata=none

CHECKFLAGS      +=

KBUILD_CFLAGS   += $(cflags-y)
KBUILD_AFLAGS   += $(cflags-y)

ifdef CONFIG_CPU_BIG_ENDIAN
KBUILD_CFLAGS   += -mbig-endian
KBUILD_AFLAGS   += -mbig-endian
LINKFLAGS       += -mbig-endian
KBUILD_LDFLAGS  += -mbig-endian
LDFLAGS += -EB
endif

head-y          := arch/c6x/kernel/head.o
core-y          += arch/c6x/kernel/ arch/c6x/mm/ arch/c6x/platforms/
libs-y          += arch/c6x/lib/

# Default to vmlinux.bin, override when needed
all: vmlinux.bin

boot := arch/$(ARCH)/boot

# Are we making a dtbImage.<boardname> target? If so, crack out the boardname
DTB:=$(subst dtbImage.,,$(filter dtbImage.%, $(MAKECMDGOALS)))
export DTB

ifneq ($(DTB),)
core-y	+= $(boot)/
endif

# With make 3.82 we cannot mix normal and wildcard targets

vmlinux.bin: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)

dtbImage.%: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)

archclean:
	$(Q)$(MAKE) $(clean)=$(boot)

define archhelp
  @echo '  vmlinux.bin     - Binary kernel image (arch/$(ARCH)/boot/vmlinux.bin)'
  @echo '  dtbImage.<dt>   - ELF image with $(arch)/boot/dts/<dt>.dts linked in'
  @echo '                  - stripped elf with fdt blob'
endef

arch/c6x/boot/Makefile

0 → 100644
+30 −0
Original line number Original line Diff line number Diff line
#
# Makefile for bootable kernel images
#

OBJCOPYFLAGS_vmlinux.bin := -O binary
$(obj)/vmlinux.bin: vmlinux FORCE
	$(call if_changed,objcopy)

DTC_FLAGS ?= -p 1024

ifneq ($(DTB),)
obj-y += linked_dtb.o
endif

$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call cmd,dtc)

quiet_cmd_cp = CP      $< $@$2
	cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)

# Generate builtin.dtb from $(DTB).dtb
$(obj)/builtin.dtb: $(obj)/$(DTB).dtb
	$(call if_changed,cp)

$(obj)/linked_dtb.o: $(obj)/builtin.dtb

$(obj)/dtbImage.%: vmlinux
	$(call if_changed,objcopy)

clean-files := $(obj)/*.dtb
+44 −0
Original line number Original line Diff line number Diff line
CONFIG_SOC_TMS320C6455=y
CONFIG_EXPERIMENTAL=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
CONFIG_SPARSE_IRQ=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EXPERT=y
# CONFIG_FUTEX is not set
# CONFIG_SLUB_DEBUG is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=2
CONFIG_BLK_DEV_RAM_SIZE=17000
CONFIG_MISC_DEVICES=y
# CONFIG_INPUT is not set
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_HWMON is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_IOMMU_SUPPORT is not set
# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_CRC16=y
# CONFIG_ENABLE_MUST_CHECK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_MTD=y
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_PHYSMAP_OF=y
+41 −0
Original line number Original line Diff line number Diff line
CONFIG_SOC_TMS320C6457=y
CONFIG_EXPERIMENTAL=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
CONFIG_SPARSE_IRQ=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EXPERT=y
# CONFIG_FUTEX is not set
# CONFIG_SLUB_DEBUG is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_BOARD_EVM6457=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=2
CONFIG_BLK_DEV_RAM_SIZE=17000
CONFIG_MISC_DEVICES=y
# CONFIG_INPUT is not set
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_HWMON is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_IOMMU_SUPPORT is not set
# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_CRC16=y
# CONFIG_ENABLE_MUST_CHECK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
Loading