nios2: Build infrastructure
This patch adds Makefile and Kconfig files required for building a nios2 kernel. Signed-off-by: Ley Foon Tan <lftan@altera.com>
This commit is contained in:
parent
9cce02ec71
commit
2fc8483fdc
|
@ -0,0 +1,201 @@
|
|||
config NIOS2
|
||||
def_bool y
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select CLKSRC_OF
|
||||
select GENERIC_ATOMIC64
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select GENERIC_CPU_DEVICES
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_IRQ_SHOW
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select IRQ_DOMAIN
|
||||
select MODULES_USE_ELF_RELA
|
||||
select OF
|
||||
select OF_EARLY_FLATTREE
|
||||
select SOC_BUS
|
||||
select SPARSE_IRQ
|
||||
select USB_ARCH_HAS_HCD if USB_SUPPORT
|
||||
|
||||
config GENERIC_CSUM
|
||||
def_bool y
|
||||
|
||||
config GENERIC_HWEIGHT
|
||||
def_bool y
|
||||
|
||||
config GENERIC_CALIBRATE_DELAY
|
||||
def_bool y
|
||||
|
||||
config NO_IOPORT_MAP
|
||||
def_bool y
|
||||
|
||||
config HAS_DMA
|
||||
def_bool y
|
||||
|
||||
config FPU
|
||||
def_bool n
|
||||
|
||||
config SWAP
|
||||
def_bool n
|
||||
|
||||
config RWSEM_GENERIC_SPINLOCK
|
||||
def_bool y
|
||||
|
||||
config TRACE_IRQFLAGS_SUPPORT
|
||||
def_bool n
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
menu "Kernel features"
|
||||
|
||||
source "kernel/Kconfig.preempt"
|
||||
|
||||
source "kernel/Kconfig.freezer"
|
||||
|
||||
source "kernel/Kconfig.hz"
|
||||
|
||||
source "mm/Kconfig"
|
||||
|
||||
config FORCE_MAX_ZONEORDER
|
||||
int "Maximum zone order"
|
||||
range 9 20
|
||||
default "11"
|
||||
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.
|
||||
|
||||
endmenu
|
||||
|
||||
source "arch/nios2/platform/Kconfig.platform"
|
||||
|
||||
menu "Processor type and features"
|
||||
|
||||
config MMU
|
||||
def_bool y
|
||||
|
||||
config NIOS2_ALIGNMENT_TRAP
|
||||
bool "Catch alignment trap"
|
||||
default y
|
||||
help
|
||||
Nios II CPUs cannot fetch/store data which is not bus aligned,
|
||||
i.e., a 2 or 4 byte fetch must start at an address divisible by
|
||||
2 or 4. Any non-aligned load/store instructions will be trapped and
|
||||
emulated in software if you say Y here, which has a performance
|
||||
impact.
|
||||
|
||||
comment "Boot options"
|
||||
|
||||
config CMDLINE_BOOL
|
||||
bool "Default bootloader kernel arguments"
|
||||
default y
|
||||
|
||||
config CMDLINE
|
||||
string "Default kernel command string"
|
||||
default ""
|
||||
depends on CMDLINE_BOOL
|
||||
help
|
||||
On some platforms, there is currently no way for the boot loader to
|
||||
pass arguments to the kernel. For these platforms, you can supply
|
||||
some command-line options at build time by entering them here. In
|
||||
other cases you can specify kernel args so that you don't have
|
||||
to set them up in board prom initialization routines.
|
||||
|
||||
config CMDLINE_FORCE
|
||||
bool "Force default kernel command string"
|
||||
depends on CMDLINE_BOOL
|
||||
help
|
||||
Set this to have arguments from the default kernel command string
|
||||
override those passed by the boot loader.
|
||||
|
||||
config NIOS2_CMDLINE_IGNORE_DTB
|
||||
bool "Ignore kernel command string from DTB"
|
||||
depends on !CMDLINE_FORCE
|
||||
default y
|
||||
help
|
||||
Set this to ignore the bootargs property from the devicetree's
|
||||
chosen node and fall back to CMDLINE if nothing is passed.
|
||||
|
||||
config NIOS2_PASS_CMDLINE
|
||||
bool "Passed kernel command line from u-boot"
|
||||
default n
|
||||
help
|
||||
Use bootargs env variable from u-boot for kernel command line.
|
||||
will override "Default kernel command string".
|
||||
Say N if you are unsure.
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Advanced setup"
|
||||
|
||||
config ADVANCED_OPTIONS
|
||||
bool "Prompt for advanced kernel configuration options"
|
||||
help
|
||||
|
||||
comment "Default settings for advanced configuration options are used"
|
||||
depends on !ADVANCED_OPTIONS
|
||||
|
||||
config NIOS2_KERNEL_MMU_REGION_BASE_BOOL
|
||||
bool "Set custom kernel MMU region base address"
|
||||
depends on ADVANCED_OPTIONS
|
||||
help
|
||||
This option allows you to set the virtual address of the kernel MMU region.
|
||||
|
||||
Say N here unless you know what you are doing.
|
||||
|
||||
config NIOS2_KERNEL_MMU_REGION_BASE
|
||||
hex "Virtual base address of the kernel MMU region " if NIOS2_KERNEL_MMU_REGION_BASE_BOOL
|
||||
default "0x80000000"
|
||||
help
|
||||
This option allows you to set the virtual base address of the kernel MMU region.
|
||||
|
||||
config NIOS2_KERNEL_REGION_BASE_BOOL
|
||||
bool "Set custom kernel region base address"
|
||||
depends on ADVANCED_OPTIONS
|
||||
help
|
||||
This option allows you to set the virtual address of the kernel region.
|
||||
|
||||
Say N here unless you know what you are doing.
|
||||
|
||||
config NIOS2_KERNEL_REGION_BASE
|
||||
hex "Virtual base address of the kernel region " if NIOS2_KERNEL_REGION_BASE_BOOL
|
||||
default "0xc0000000"
|
||||
|
||||
config NIOS2_IO_REGION_BASE_BOOL
|
||||
bool "Set custom I/O region base address"
|
||||
depends on ADVANCED_OPTIONS
|
||||
help
|
||||
This option allows you to set the virtual address of the I/O region.
|
||||
|
||||
Say N here unless you know what you are doing.
|
||||
|
||||
config NIOS2_IO_REGION_BASE
|
||||
hex "Virtual base address of the I/O region" if NIOS2_IO_REGION_BASE_BOOL
|
||||
default "0xe0000000"
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Executable file formats"
|
||||
|
||||
source "fs/Kconfig.binfmt"
|
||||
|
||||
endmenu
|
||||
|
||||
source "net/Kconfig"
|
||||
|
||||
source "drivers/Kconfig"
|
||||
|
||||
source "fs/Kconfig"
|
||||
|
||||
source "arch/nios2/Kconfig.debug"
|
||||
|
||||
source "security/Kconfig"
|
||||
|
||||
source "crypto/Kconfig"
|
||||
|
||||
source "lib/Kconfig"
|
|
@ -0,0 +1,17 @@
|
|||
menu "Kernel hacking"
|
||||
|
||||
config TRACE_IRQFLAGS_SUPPORT
|
||||
def_bool y
|
||||
|
||||
source "lib/Kconfig.debug"
|
||||
|
||||
config DEBUG_STACK_USAGE
|
||||
bool "Enable stack utilization instrumentation"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
Enables the display of the minimum amount of free stack which each
|
||||
task has ever had available in the sysrq-T and sysrq-P debug output.
|
||||
|
||||
This option will slow down process creation somewhat.
|
||||
|
||||
endmenu
|
|
@ -0,0 +1,73 @@
|
|||
#
|
||||
# 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) 2013 Altera Corporation
|
||||
# Copyright (C) 1994, 95, 96, 2003 by Wind River Systems
|
||||
# Written by Fredrik Markstrom
|
||||
#
|
||||
# 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" cleaning up for this architecture.
|
||||
#
|
||||
# Nios2 port by Wind River Systems Inc trough:
|
||||
# fredrik.markstrom@gmail.com and ivarholmqvist@gmail.com
|
||||
|
||||
UTS_SYSNAME = Linux
|
||||
|
||||
export MMU
|
||||
|
||||
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
|
||||
|
||||
KBUILD_CFLAGS += -pipe -D__linux__ -D__ELF__
|
||||
KBUILD_CFLAGS += $(if $(CONFIG_NIOS2_HW_MUL_SUPPORT),-mhw-mul,-mno-hw-mul)
|
||||
KBUILD_CFLAGS += $(if $(CONFIG_NIOS2_HW_MULX_SUPPORT),-mhw-mulx,-mno-hw-mulx)
|
||||
KBUILD_CFLAGS += $(if $(CONFIG_NIOS2_HW_DIV_SUPPORT),-mhw-div,-mno-hw-div)
|
||||
KBUILD_CFLAGS += $(if $(CONFIG_NIOS2_FPU_SUPPORT),-mcustom-fpu-cfg=60-1,)
|
||||
|
||||
KBUILD_CFLAGS += -fno-optimize-sibling-calls
|
||||
KBUILD_CFLAGS += -DUTS_SYSNAME=\"$(UTS_SYSNAME)\"
|
||||
KBUILD_CFLAGS += -fno-builtin
|
||||
KBUILD_CFLAGS += -G 0
|
||||
|
||||
head-y := arch/nios2/kernel/head.o
|
||||
libs-y += arch/nios2/lib/ $(LIBGCC)
|
||||
core-y += arch/nios2/kernel/ arch/nios2/mm/
|
||||
core-y += arch/nios2/platform/
|
||||
|
||||
INSTALL_PATH ?= /tftpboot
|
||||
nios2-boot := arch/$(ARCH)/boot
|
||||
BOOT_TARGETS = vmImage zImage
|
||||
PHONY += $(BOOT_TARGETS) install
|
||||
KBUILD_IMAGE := $(nios2-boot)/vmImage
|
||||
|
||||
ifneq ($(CONFIG_NIOS2_DTB_SOURCE),"")
|
||||
core-y += $(nios2-boot)/
|
||||
endif
|
||||
|
||||
all: vmImage
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(nios2-boot)
|
||||
|
||||
%.dtb:
|
||||
$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
|
||||
|
||||
dtbs:
|
||||
$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
|
||||
|
||||
$(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
|
||||
|
||||
install:
|
||||
$(Q)$(MAKE) $(build)=$(nios2-boot) BOOTIMAGE=$(KBUILD_IMAGE) install
|
||||
|
||||
define archhelp
|
||||
echo '* vmImage - Kernel-only image for U-Boot ($(KBUILD_IMAGE))'
|
||||
echo ' install - Install kernel using'
|
||||
echo ' (your) ~/bin/$(INSTALLKERNEL) or'
|
||||
echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
||||
echo ' install to $$(INSTALL_PATH)'
|
||||
echo ' dtbs - Build device tree blobs for enabled boards'
|
||||
endef
|
|
@ -0,0 +1,52 @@
|
|||
#
|
||||
# arch/nios2/boot/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.
|
||||
#
|
||||
|
||||
UIMAGE_LOADADDR = $(shell $(NM) vmlinux | awk '$$NF == "_stext" {print $$1}')
|
||||
UIMAGE_ENTRYADDR = $(shell $(NM) vmlinux | awk '$$NF == "_start" {print $$1}')
|
||||
UIMAGE_COMPRESSION = gzip
|
||||
|
||||
OBJCOPYFLAGS_vmlinux.bin := -O binary
|
||||
|
||||
targets += vmlinux.bin vmlinux.gz vmImage
|
||||
|
||||
$(obj)/vmlinux.bin: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
|
||||
$(call if_changed,gzip)
|
||||
|
||||
$(obj)/vmImage: $(obj)/vmlinux.gz
|
||||
$(call if_changed,uimage)
|
||||
@$(kecho) 'Kernel: $@ is ready'
|
||||
|
||||
# Rule to build device tree blobs
|
||||
DTB_SRC := $(patsubst "%",%,$(CONFIG_NIOS2_DTB_SOURCE))
|
||||
|
||||
# Make sure the generated dtb gets removed during clean
|
||||
extra-$(CONFIG_NIOS2_DTB_SOURCE_BOOL) += system.dtb
|
||||
|
||||
$(obj)/system.dtb: $(DTB_SRC) FORCE
|
||||
$(call cmd,dtc)
|
||||
|
||||
# Ensure system.dtb exists
|
||||
$(obj)/linked_dtb.o: $(obj)/system.dtb
|
||||
|
||||
obj-$(CONFIG_NIOS2_DTB_SOURCE_BOOL) += linked_dtb.o
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
# Rule to build device tree blobs with make command
|
||||
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
|
||||
$(call if_changed_dep,dtc)
|
||||
|
||||
$(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
|
||||
|
||||
clean-files := *.dtb
|
||||
|
||||
install:
|
||||
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
|
|
@ -0,0 +1,52 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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) 1995 by Linus Torvalds
|
||||
#
|
||||
# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
|
||||
#
|
||||
# "make install" script for nios2 architecture
|
||||
#
|
||||
# Arguments:
|
||||
# $1 - kernel version
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
# Default install - same as make zlilo
|
||||
|
||||
if [ -f $4/vmlinuz ]; then
|
||||
mv $4/vmlinuz $4/vmlinuz.old
|
||||
fi
|
||||
|
||||
if [ -f $4/System.map ]; then
|
||||
mv $4/System.map $4/System.old
|
||||
fi
|
||||
|
||||
cat $2 > $4/vmlinuz
|
||||
cp $3 $4/System.map
|
||||
|
||||
sync
|
|
@ -0,0 +1,77 @@
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
# CONFIG_ELF_CORE is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_SIGNALFD is not set
|
||||
# CONFIG_TIMERFD is not set
|
||||
# CONFIG_EVENTFD is not set
|
||||
# CONFIG_SHMEM is not set
|
||||
# CONFIG_AIO is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_NIOS2_MEM_BASE=0x10000000
|
||||
CONFIG_NIOS2_HW_MUL_SUPPORT=y
|
||||
CONFIG_NIOS2_HW_DIV_SUPPORT=y
|
||||
CONFIG_CUSTOM_CACHE_SETTINGS=y
|
||||
CONFIG_NIOS2_DCACHE_SIZE=0x8000
|
||||
CONFIG_NIOS2_ICACHE_SIZE=0x8000
|
||||
# CONFIG_NIOS2_CMDLINE_IGNORE_DTB is not set
|
||||
CONFIG_NIOS2_PASS_CMDLINE=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_ALTERA_TSE=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
# CONFIG_WLAN is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_ALTERA_JTAGUART=y
|
||||
CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE=y
|
||||
CONFIG_SERIAL_ALTERA_UART=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY_USER is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_SUNRPC_DEBUG=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
|
@ -0,0 +1,66 @@
|
|||
generic-y += atomic.h
|
||||
generic-y += auxvec.h
|
||||
generic-y += barrier.h
|
||||
generic-y += bitops.h
|
||||
generic-y += bitsperlong.h
|
||||
generic-y += bug.h
|
||||
generic-y += bugs.h
|
||||
generic-y += clkdev.h
|
||||
generic-y += cputime.h
|
||||
generic-y += current.h
|
||||
generic-y += device.h
|
||||
generic-y += div64.h
|
||||
generic-y += dma.h
|
||||
generic-y += emergency-restart.h
|
||||
generic-y += errno.h
|
||||
generic-y += exec.h
|
||||
generic-y += fb.h
|
||||
generic-y += fcntl.h
|
||||
generic-y += ftrace.h
|
||||
generic-y += futex.h
|
||||
generic-y += hardirq.h
|
||||
generic-y += hash.h
|
||||
generic-y += hw_irq.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += ioctls.h
|
||||
generic-y += ipcbuf.h
|
||||
generic-y += irq_regs.h
|
||||
generic-y += irq_work.h
|
||||
generic-y += kdebug.h
|
||||
generic-y += kmap_types.h
|
||||
generic-y += kvm_para.h
|
||||
generic-y += local.h
|
||||
generic-y += mcs_spinlock.h
|
||||
generic-y += mman.h
|
||||
generic-y += module.h
|
||||
generic-y += msgbuf.h
|
||||
generic-y += param.h
|
||||
generic-y += pci.h
|
||||
generic-y += percpu.h
|
||||
generic-y += poll.h
|
||||
generic-y += posix_types.h
|
||||
generic-y += preempt.h
|
||||
generic-y += resource.h
|
||||
generic-y += scatterlist.h
|
||||
generic-y += sections.h
|
||||
generic-y += segment.h
|
||||
generic-y += sembuf.h
|
||||
generic-y += serial.h
|
||||
generic-y += shmbuf.h
|
||||
generic-y += shmparam.h
|
||||
generic-y += siginfo.h
|
||||
generic-y += signal.h
|
||||
generic-y += socket.h
|
||||
generic-y += sockios.h
|
||||
generic-y += spinlock.h
|
||||
generic-y += stat.h
|
||||
generic-y += statfs.h
|
||||
generic-y += termbits.h
|
||||
generic-y += termios.h
|
||||
generic-y += topology.h
|
||||
generic-y += trace_clock.h
|
||||
generic-y += types.h
|
||||
generic-y += unaligned.h
|
||||
generic-y += user.h
|
||||
generic-y += vga.h
|
||||
generic-y += xor.h
|
|
@ -0,0 +1,4 @@
|
|||
include include/uapi/asm-generic/Kbuild.asm
|
||||
|
||||
header-y += elf.h
|
||||
header-y += ucontext.h
|
|
@ -0,0 +1,24 @@
|
|||
#
|
||||
# Makefile for the nios2 linux kernel.
|
||||
#
|
||||
|
||||
extra-y += head.o
|
||||
extra-y += vmlinux.lds
|
||||
|
||||
obj-y += cpuinfo.o
|
||||
obj-y += entry.o
|
||||
obj-y += insnemu.o
|
||||
obj-y += irq.o
|
||||
obj-y += nios2_ksyms.o
|
||||
obj-y += process.o
|
||||
obj-y += prom.o
|
||||
obj-y += ptrace.o
|
||||
obj-y += setup.o
|
||||
obj-y += signal.o
|
||||
obj-y += sys_nios2.o
|
||||
obj-y += syscall_table.o
|
||||
obj-y += time.o
|
||||
obj-y += traps.o
|
||||
|
||||
obj-$(CONFIG_MODULES) += module.o
|
||||
obj-$(CONFIG_NIOS2_ALIGNMENT_TRAP) += misaligned.o
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright (C) 2004 Microtronix Datacom Ltd
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <linux/export.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
/* string functions */
|
||||
|
||||
EXPORT_SYMBOL(memcpy);
|
||||
EXPORT_SYMBOL(memset);
|
||||
EXPORT_SYMBOL(memmove);
|
||||
|
||||
/*
|
||||
* libgcc functions - functions that are used internally by the
|
||||
* compiler... (prototypes are not correct though, but that
|
||||
* doesn't really matter since they're not versioned).
|
||||
*/
|
||||
#define DECLARE_EXPORT(name) extern void name(void); EXPORT_SYMBOL(name)
|
||||
|
||||
DECLARE_EXPORT(__gcc_bcmp);
|
||||
DECLARE_EXPORT(__divsi3);
|
||||
DECLARE_EXPORT(__moddi3);
|
||||
DECLARE_EXPORT(__modsi3);
|
||||
DECLARE_EXPORT(__udivmoddi4);
|
||||
DECLARE_EXPORT(__udivsi3);
|
||||
DECLARE_EXPORT(__umoddi3);
|
||||
DECLARE_EXPORT(__umodsi3);
|
||||
DECLARE_EXPORT(__muldi3);
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Copyright (C) 2009 Thomas Chou <thomas@wytron.com.tw>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#include <asm/page.h>
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/thread_info.h>
|
||||
|
||||
OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
|
||||
|
||||
OUTPUT_ARCH(nios)
|
||||
ENTRY(_start) /* Defined in head.S */
|
||||
|
||||
jiffies = jiffies_64;
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = CONFIG_NIOS2_MEM_BASE | CONFIG_NIOS2_KERNEL_REGION_BASE;
|
||||
|
||||
_text = .;
|
||||
_stext = .;
|
||||
HEAD_TEXT_SECTION
|
||||
.text : {
|
||||
TEXT_TEXT
|
||||
SCHED_TEXT
|
||||
LOCK_TEXT
|
||||
IRQENTRY_TEXT
|
||||
KPROBES_TEXT
|
||||
} =0
|
||||
_etext = .;
|
||||
|
||||
.got : {
|
||||
*(.got.plt)
|
||||
*(.igot.plt)
|
||||
*(.got)
|
||||
*(.igot)
|
||||
}
|
||||
|
||||
EXCEPTION_TABLE(L1_CACHE_BYTES)
|
||||
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__init_begin = .;
|
||||
INIT_TEXT_SECTION(PAGE_SIZE)
|
||||
INIT_DATA_SECTION(PAGE_SIZE)
|
||||
PERCPU_SECTION(L1_CACHE_BYTES)
|
||||
__init_end = .;
|
||||
|
||||
_sdata = .;
|
||||
RO_DATA_SECTION(PAGE_SIZE)
|
||||
RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
|
||||
_edata = .;
|
||||
|
||||
BSS_SECTION(0, 0, 0)
|
||||
_end = .;
|
||||
|
||||
STABS_DEBUG
|
||||
DWARF_DEBUG
|
||||
NOTES
|
||||
|
||||
DISCARDS
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#
|
||||
# Makefile for Nios2-specific library files.
|
||||
#
|
||||
|
||||
lib-y += delay.o
|
||||
lib-y += memcpy.o
|
||||
lib-y += memmove.o
|
||||
lib-y += memset.o
|
|
@ -0,0 +1,14 @@
|
|||
#
|
||||
# Makefile for the Nios2-specific parts of the memory manager.
|
||||
#
|
||||
|
||||
obj-y += cacheflush.o
|
||||
obj-y += dma-mapping.o
|
||||
obj-y += extable.o
|
||||
obj-y += fault.o
|
||||
obj-y += init.o
|
||||
obj-y += ioremap.o
|
||||
obj-y += mmu_context.o
|
||||
obj-y += pgtable.o
|
||||
obj-y += tlb.o
|
||||
obj-y += uaccess.o
|
|
@ -0,0 +1,129 @@
|
|||
menu "Platform options"
|
||||
|
||||
comment "Memory settings"
|
||||
|
||||
config NIOS2_MEM_BASE
|
||||
hex "Memory base address"
|
||||
default "0x00000000"
|
||||
help
|
||||
This is the physical address of the memory that the kernel will run
|
||||
from. This address is used to link the kernel and setup initial memory
|
||||
management. You should take the raw memory address without any MMU
|
||||
or cache bits set.
|
||||
Please not that this address is used directly so you have to manually
|
||||
do address translation if it's connected to a bridge.
|
||||
|
||||
comment "Device tree"
|
||||
|
||||
config NIOS2_DTB_AT_PHYS_ADDR
|
||||
bool "DTB at physical address"
|
||||
default n
|
||||
help
|
||||
When enabled you can select a physical address to load the dtb from.
|
||||
Normally this address is passed by a bootloader such as u-boot but
|
||||
using this you can use a devicetree without a bootloader.
|
||||
This way you can store a devicetree in NOR flash or an onchip rom.
|
||||
Please note that this address is used directly so you have to manually
|
||||
do address translation if it's connected to a bridge. Also take into
|
||||
account that when using an MMU you'd have to ad 0xC0000000 to your
|
||||
address
|
||||
|
||||
config NIOS2_DTB_PHYS_ADDR
|
||||
hex "DTB Address"
|
||||
depends on NIOS2_DTB_AT_PHYS_ADDR
|
||||
default "0xC0000000"
|
||||
help
|
||||
Physical address of a dtb blob.
|
||||
|
||||
config NIOS2_DTB_SOURCE_BOOL
|
||||
bool "Compile and link device tree into kernel image"
|
||||
default n
|
||||
help
|
||||
This allows you to specify a dts (device tree source) file
|
||||
which will be compiled and linked into the kernel image.
|
||||
|
||||
config NIOS2_DTB_SOURCE
|
||||
string "Device tree source file"
|
||||
depends on NIOS2_DTB_SOURCE_BOOL
|
||||
default ""
|
||||
help
|
||||
Absolute path to the device tree source (dts) file describing your
|
||||
system.
|
||||
|
||||
comment "Nios II instructions"
|
||||
|
||||
config NIOS2_HW_MUL_SUPPORT
|
||||
bool "Enable MUL instruction"
|
||||
default n
|
||||
help
|
||||
Set to true if you configured the Nios II to include the MUL
|
||||
instruction. This will enable the -mhw-mul compiler flag.
|
||||
|
||||
config NIOS2_HW_MULX_SUPPORT
|
||||
bool "Enable MULX instruction"
|
||||
default n
|
||||
help
|
||||
Set to true if you configured the Nios II to include the MULX
|
||||
instruction. Enables the -mhw-mulx compiler flag.
|
||||
|
||||
config NIOS2_HW_DIV_SUPPORT
|
||||
bool "Enable DIV instruction"
|
||||
default n
|
||||
help
|
||||
Set to true if you configured the Nios II to include the DIV
|
||||
instruction. Enables the -mhw-div compiler flag.
|
||||
|
||||
config NIOS2_FPU_SUPPORT
|
||||
bool "Custom floating point instr support"
|
||||
default n
|
||||
help
|
||||
Enables the -mcustom-fpu-cfg=60-1 compiler flag.
|
||||
|
||||
config NIOS2_CI_SWAB_SUPPORT
|
||||
bool "Byteswap custom instruction"
|
||||
default n
|
||||
help
|
||||
Use the byteswap (endian converter) Nios II custom instruction provided
|
||||
by Altera and which can be enabled in QSYS builder. This accelerates
|
||||
endian conversions in the kernel (e.g. ntohs).
|
||||
|
||||
config NIOS2_CI_SWAB_NO
|
||||
int "Byteswap custom instruction number" if NIOS2_CI_SWAB_SUPPORT
|
||||
default 0
|
||||
help
|
||||
Number of the instruction as configured in QSYS Builder.
|
||||
|
||||
comment "Cache settings"
|
||||
|
||||
config CUSTOM_CACHE_SETTINGS
|
||||
bool "Custom cache settings"
|
||||
help
|
||||
This option allows you to tweak the cache settings used during early
|
||||
boot (where the information from device tree is not yet available).
|
||||
There should be no reason to change these values. Linux will work
|
||||
perfectly fine, even if the Nios II is configured with smaller caches.
|
||||
|
||||
Say N here unless you know what you are doing.
|
||||
|
||||
config NIOS2_DCACHE_SIZE
|
||||
hex "D-Cache size" if CUSTOM_CACHE_SETTINGS
|
||||
range 0x200 0x10000
|
||||
default "0x800"
|
||||
help
|
||||
Maximum possible data cache size.
|
||||
|
||||
config NIOS2_DCACHE_LINE_SIZE
|
||||
hex "D-Cache line size" if CUSTOM_CACHE_SETTINGS
|
||||
range 0x10 0x20
|
||||
default "0x20"
|
||||
help
|
||||
Minimum possible data cache line size.
|
||||
|
||||
config NIOS2_ICACHE_SIZE
|
||||
hex "I-Cache size" if CUSTOM_CACHE_SETTINGS
|
||||
range 0x200 0x10000
|
||||
default "0x1000"
|
||||
help
|
||||
Maximum possible instruction cache size.
|
||||
|
||||
endmenu
|
|
@ -0,0 +1 @@
|
|||
obj-y += platform.o
|
Loading…
Reference in New Issue