You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[PATCH] xtensa: Architecture support for Tensilica Xtensa Part 1
The attached patches provides part 1 of an architecture implementation for the Tensilica Xtensa CPU series. Signed-off-by: Chris Zankel <chris@zankel.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
48b415ca13
commit
8e1a6dd2fd
@@ -0,0 +1,258 @@
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see Documentation/kbuild/config-language.txt.
|
||||
|
||||
mainmenu "Linux/Xtensa Kernel Configuration"
|
||||
|
||||
config FRAME_POINTER
|
||||
bool
|
||||
default n
|
||||
|
||||
config XTENSA
|
||||
bool
|
||||
default y
|
||||
help
|
||||
Xtensa processors are 32-bit RISC machines designed by Tensilica
|
||||
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 <http://xtensa.sourceforge.net/>.
|
||||
|
||||
config UID16
|
||||
bool
|
||||
default n
|
||||
|
||||
config RWSEM_XCHGADD_ALGORITHM
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
default y
|
||||
|
||||
config GENERIC_HARDIRQS
|
||||
bool
|
||||
default y
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
menu "Processor type and features"
|
||||
|
||||
choice
|
||||
prompt "Xtensa Processor Configuration"
|
||||
default XTENSA_CPU_LINUX_BE
|
||||
|
||||
config XTENSA_CPU_LINUX_BE
|
||||
bool "linux_be"
|
||||
---help---
|
||||
The linux_be processor configuration is the baseline Xtensa
|
||||
configurations included in this kernel and also used by
|
||||
binutils, gcc, and gdb. It contains no TIE, no coprocessors,
|
||||
and the following configuration options:
|
||||
|
||||
Code Density Option 2 Misc Special Registers
|
||||
NSA/NSAU Instructions 128-bit Data Bus Width
|
||||
Processor ID 8K, 2-way I and D Caches
|
||||
Zero-Overhead Loops 2 Inst Address Break Registers
|
||||
Big Endian 2 Data Address Break Registers
|
||||
64 General-Purpose Registers JTAG Interface and Trace Port
|
||||
17 Interrupts MMU w/ TLBs and Autorefill
|
||||
3 Interrupt Levels 8 Autorefill Ways (I/D TLBs)
|
||||
3 Timers Unaligned Exceptions
|
||||
endchoice
|
||||
|
||||
config MMU
|
||||
bool
|
||||
default y
|
||||
|
||||
config XTENSA_UNALIGNED_USER
|
||||
bool "Unaligned memory access in use space"
|
||||
---help---
|
||||
The Xtensa architecture currently does not handle unaligned
|
||||
memory accesses in hardware but through an exception handler.
|
||||
Per default, unaligned memory accesses are disabled in user space.
|
||||
|
||||
Say Y here to enable unaligned memory access in user space.
|
||||
|
||||
config PREEMPT
|
||||
bool "Preemptible Kernel"
|
||||
---help---
|
||||
This option reduces the latency of the kernel when reacting to
|
||||
real-time or interactive events by allowing a low priority process to
|
||||
be preempted even if it is in kernel mode executing a system call.
|
||||
Unfortunately the kernel code has some race conditions if both
|
||||
CONFIG_SMP and CONFIG_PREEMPT are enabled, so this option is
|
||||
currently disabled if you are building an SMP kernel.
|
||||
|
||||
Say Y here if you are building a kernel for a desktop, embedded
|
||||
or real-time system. Say N if you are unsure.
|
||||
|
||||
config MATH_EMULATION
|
||||
bool "Math emulation"
|
||||
help
|
||||
Can we use information of configuration file?
|
||||
|
||||
config HIGHMEM
|
||||
bool "High memory support"
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Platform options"
|
||||
|
||||
choice
|
||||
prompt "Xtensa System Type"
|
||||
default XTENSA_PLATFORM_ISS
|
||||
|
||||
config XTENSA_PLATFORM_ISS
|
||||
bool "ISS"
|
||||
help
|
||||
ISS is an acronym for Tensilica's Instruction Set Simulator.
|
||||
|
||||
config XTENSA_PLATFORM_XT2000
|
||||
bool "XT2000"
|
||||
help
|
||||
XT2000 is the name of Tensilica's feature-rich emulation platform.
|
||||
This hardware is capable of running a full Linux distribution.
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
config XTENSA_CALIBRATE_CCOUNT
|
||||
bool "Auto calibration of the CPU clock rate"
|
||||
---help---
|
||||
On some platforms (XT2000, for example), the CPU clock rate can
|
||||
vary. The frequency can be determined, however, by measuring
|
||||
against a well known, fixed frequency, such as an UART oscillator.
|
||||
|
||||
config XTENSA_CPU_CLOCK
|
||||
int "CPU clock rate [MHz]"
|
||||
depends on !XTENSA_CALIBRATE_CCOUNT
|
||||
default "16"
|
||||
|
||||
config GENERIC_CALIBRATE_DELAY
|
||||
bool "Auto calibration of the BogoMIPS value"
|
||||
---help---
|
||||
The BogoMIPS value can easily derived from the CPU frequency.
|
||||
|
||||
config CMDLINE_BOOL
|
||||
bool "Default bootloader kernel arguments"
|
||||
|
||||
config CMDLINE
|
||||
string "Initial kernel command string"
|
||||
depends on CMDLINE_BOOL
|
||||
default "console=ttyS0,38400 root=/dev/ram"
|
||||
help
|
||||
On some architectures (EBSA110 and CATS), 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. As a minimum, you should specify the
|
||||
memory size and the root device (e.g., mem=64M root=/dev/nfs).
|
||||
|
||||
config SERIAL_CONSOLE
|
||||
bool
|
||||
depends on XTENSA_PLATFORM_ISS
|
||||
default y
|
||||
|
||||
config XTENSA_ISS_NETWORK
|
||||
bool
|
||||
depends on XTENSA_PLATFORM_ISS
|
||||
default y
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Bus options"
|
||||
|
||||
config PCI
|
||||
bool "PCI support" if !XTENSA_PLATFORM_ISS
|
||||
depends on !XTENSA_PLATFORM_ISS
|
||||
default y
|
||||
help
|
||||
Find out whether you have a PCI motherboard. PCI is the name of a
|
||||
bus system, i.e. the way the CPU talks to the other stuff inside
|
||||
your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
|
||||
VESA. If you have PCI, say Y, otherwise N.
|
||||
|
||||
The PCI-HOWTO, available from
|
||||
<http://www.linuxdoc.org/docs.html#howto>, contains valuable
|
||||
information about which PCI hardware does work under Linux and which
|
||||
doesn't
|
||||
|
||||
source "drivers/pci/Kconfig"
|
||||
|
||||
config HOTPLUG
|
||||
|
||||
bool "Support for hot-pluggable devices"
|
||||
---help---
|
||||
Say Y here if you want to plug devices into your computer while
|
||||
the system is running, and be able to use them quickly. In many
|
||||
cases, the devices can likewise be unplugged at any time too.
|
||||
|
||||
One well known example of this is PCMCIA- or PC-cards, credit-card
|
||||
size devices such as network cards, modems or hard drives which are
|
||||
plugged into slots found on all modern laptop computers. Another
|
||||
example, used on modern desktops as well as laptops, is USB.
|
||||
|
||||
Enable HOTPLUG and KMOD, and build a modular kernel. Get agent
|
||||
software (at <http://linux-hotplug.sourceforge.net/>) and install it.
|
||||
Then your kernel will automatically call out to a user mode "policy
|
||||
agent" (/sbin/hotplug) to load modules and set up software needed
|
||||
to use devices as you hotplug them.
|
||||
|
||||
source "drivers/pcmcia/Kconfig"
|
||||
|
||||
source "drivers/pci/hotplug/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Exectuable file formats"
|
||||
|
||||
# only elf supported
|
||||
config KCORE_ELF
|
||||
bool
|
||||
depends on PROC_FS
|
||||
default y
|
||||
help
|
||||
If you enabled support for /proc file system then the file
|
||||
/proc/kcore will contain the kernel core image in ELF format. This
|
||||
can be used in gdb:
|
||||
|
||||
$ cd /usr/src/linux ; gdb vmlinux /proc/kcore
|
||||
|
||||
This is especially useful if you have compiled the kernel with the
|
||||
"-g" option to preserve debugging information. It is mainly used
|
||||
for examining kernel data structures on the live kernel.
|
||||
|
||||
source "fs/Kconfig.binfmt"
|
||||
|
||||
endmenu
|
||||
|
||||
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 gziped 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"
|
||||
|
||||
source "crypto/Kconfig"
|
||||
|
||||
source "lib/Kconfig"
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
menu "Kernel hacking"
|
||||
|
||||
source "lib/Kconfig.debug"
|
||||
|
||||
endmenu
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
#
|
||||
# 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) 2001 - 2005 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 CPU=<xtensa_config> to use another default compiler.)
|
||||
|
||||
cpu-$(CONFIG_XTENSA_CPU_LINUX_BE) := linux_be
|
||||
cpu-$(CONFIG_XTENSA_CPU_LINUX_CUSTOM) := linux_custom
|
||||
|
||||
CPU = $(cpu-y)
|
||||
export CPU
|
||||
|
||||
# Platform configuration
|
||||
|
||||
platform-y := common
|
||||
platform-$(CONFIG_XTENSA_PLATFORM_XT2000) := xt2000
|
||||
platform-$(CONFIG_XTENSA_PLATFORM_ISS) := iss
|
||||
|
||||
PLATFORM = $(platform-y)
|
||||
export PLATFORM
|
||||
|
||||
#LDFLAGS_vmlinux := -T$(word 1,$(LINKSCRIPT))
|
||||
AFLAGS_vmlinux.lds.o := -Uxtensa
|
||||
CPPFLAGS += -Iarch/xtensa -Iinclude/asm -mlongcalls -g
|
||||
AFLAGS += -Iarch/xtensa -Iinclude/asm
|
||||
CPP = $(CC) -E $(CFLAGS)
|
||||
|
||||
cflags-y += -Iarch/xtensa -pipe -mlongcalls
|
||||
|
||||
|
||||
KBUILD_DEFCONFIG := common_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 ($(CPU),)
|
||||
COMPILE_ARCH = $(shell uname -m)
|
||||
|
||||
ifneq ($(COMPILE_ARCH), xtensa)
|
||||
ifndef CROSS_COMPILE
|
||||
CROSS_COMPILE = xtensa_$(CPU)-
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
|
||||
LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
||||
|
||||
head-y := arch/xtensa/kernel/head.o
|
||||
core-y += arch/xtensa/kernel/ \
|
||||
arch/xtensa/mm/ arch/xtensa/platform-$(PLATFORM)/
|
||||
libs-y += arch/xtensa/lib/ $(LIBGCC)
|
||||
|
||||
boot := arch/xtensa/boot
|
||||
|
||||
arch/xtensa/kernel/asm-offsets.s: \
|
||||
arch/xtensa/kernel/asm-offsets.c \
|
||||
include/asm-xtensa/.platform
|
||||
|
||||
include/asm-xtensa/offsets.h: arch/xtensa/kernel/asm-offsets.s
|
||||
$(call filechk,gen-asm-offsets)
|
||||
|
||||
prepare: include/asm-xtensa/.platform include/asm-xtensa/offsets.h
|
||||
|
||||
# Update machine cpu and platform symlinks if something which affects
|
||||
# them changed.
|
||||
|
||||
include/asm-xtensa/.platform: $(wildcard include/config/arch/*.h)
|
||||
@echo ' Setting up cpu ($(CPU)) and platform ($(PLATFORM)) symlinks'
|
||||
$(Q)rm -f include/asm-xtensa/platform
|
||||
$(Q)rm -f include/asm-xtensa/xtensa/config
|
||||
$(Q)(cd include/asm-xtensa/; ln -sf platform-$(PLATFORM) platform)
|
||||
$(Q)(cd include/asm-xtensa/xtensa; ln -sf config-$(CPU) config)
|
||||
|
||||
all: zImage
|
||||
|
||||
bzImage : zImage
|
||||
|
||||
zImage zImage.initrd: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $@
|
||||
|
||||
CLEAN_FILES += arch/xtensa/vmlinux.lds include/asm-xtensa/offset.h
|
||||
|
||||
define archhelp
|
||||
@echo '* zImage - Compressed kernel image (arch/xtensa/boot/images/zImage.*)'
|
||||
endef
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user