diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/v850 |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/v850')
70 files changed, 10587 insertions, 0 deletions
diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig new file mode 100644 index 00000000000..90cd4baa75e --- /dev/null +++ b/arch/v850/Kconfig @@ -0,0 +1,316 @@ +############################################################################# +# +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/kconfig-language.txt. +# +############################################################################# + +mainmenu "uClinux/v850 (w/o MMU) Kernel Configuration" + +config MMU + bool + default n +config UID16 + bool + default n +config RWSEM_GENERIC_SPINLOCK + bool + default y +config RWSEM_XCHGADD_ALGORITHM + bool + default n +config GENERIC_CALIBRATE_DELAY + bool + default y + +# Turn off some random 386 crap that can affect device config +config ISA + bool + default n +config ISAPNP + bool + default n +config EISA + bool + default n +config MCA + bool + default n + + +############################################################################# +#### v850-specific config + +# Define the architecture +config V850 + bool + default y + +menu "Processor type and features" + + choice + prompt "Platform" + default GDB + config V850E_SIM + bool "GDB" + config RTE_CB_MA1 + bool "RTE-V850E/MA1-CB" + config RTE_CB_NB85E + bool "RTE-V850E/NB85E-CB" + config RTE_CB_ME2 + bool "RTE-V850E/ME2-CB" + config V850E_AS85EP1 + bool "AS85EP1" + config V850E2_SIM85E2C + bool "sim85e2c" + config V850E2_SIM85E2S + bool "sim85e2s" + config V850E2_FPGA85E2C + bool "NA85E2C-FPGA" + config V850E2_ANNA + bool "Anna" + endchoice + + #### V850E processor-specific config + + # All CPUs currently supported use the v850e architecture + config V850E + bool + default y + + # The RTE-V850E/MA1-CB is the only type of V850E/MA1 platform we + # currently support + config V850E_MA1 + bool + depends RTE_CB_MA1 + default y + # Similarly for the RTE-V850E/NB85E-CB - V850E/TEG + config V850E_TEG + bool + depends RTE_CB_NB85E + default y + # ... and the RTE-V850E/ME2-CB - V850E/ME2 + config V850E_ME2 + bool + depends RTE_CB_ME2 + default y + + + #### sim85e2-specific config + + config V850E2_SIM85E2 + bool + depends V850E2_SIM85E2C || V850E2_SIM85E2S + default y + + + #### V850E2 processor-specific config + + # V850E2 processors + config V850E2 + bool + depends V850E2_SIM85E2 || V850E2_FPGA85E2C || V850E2_ANNA + default y + + + #### RTE-CB platform-specific config + + # Boards in the RTE-x-CB series + config RTE_CB + bool + depends RTE_CB_MA1 || RTE_CB_NB85E || RTE_CB_ME2 + default y + + config RTE_CB_MULTI + bool + # RTE_CB_NB85E can either have multi ROM support or not, but + # other platforms (currently only RTE_CB_MA1) require it. + prompt "Multi monitor ROM support" if RTE_CB_NB85E + depends RTE_CB_MA1 || RTE_CB_NB85E + default y + + config RTE_CB_MULTI_DBTRAP + bool "Pass illegal insn trap / dbtrap to kernel" + depends RTE_CB_MULTI + default n + + config RTE_CB_MA1_KSRAM + bool "Kernel in SRAM (limits size of kernel)" + depends RTE_CB_MA1 && RTE_CB_MULTI + default n + + config RTE_MB_A_PCI + bool "Mother-A PCI support" + depends RTE_CB + default y + + # The GBUS is used to talk to the RTE-MOTHER-A board + config RTE_GBUS_INT + bool + depends RTE_MB_A_PCI + default y + + # The only PCI bus we support is on the RTE-MOTHER-A board + config PCI + bool + default RTE_MB_A_PCI + + #### Some feature-specific configs + + # Everything except for the GDB simulator uses the same interrupt controller + config V850E_INTC + bool + default !V850E_SIM + + # Everything except for the various simulators uses the "Timer D" unit + config V850E_TIMER_D + bool + default !V850E_SIM && !V850E2_SIM85E2 + + # Cache control used on some v850e1 processors + config V850E_CACHE + bool + default V850E_TEG || V850E_ME2 + + # Cache control used on v850e2 processors; I think this should + # actually apply to more, but currently only the SIM85E2S uses it + config V850E2_CACHE + bool + default V850E2_SIM85E2S + + config NO_CACHE + bool + default !V850E_CACHE && !V850E2_CACHE + + #### Misc config + + config ROM_KERNEL + bool "Kernel in ROM" + depends V850E2_ANNA || V850E_AS85EP1 || RTE_CB_ME2 + + # Some platforms pre-zero memory, in which case the kernel doesn't need to + config ZERO_BSS + bool + depends !V850E2_SIM85E2C + default y + + # The crappy-ass zone allocator requires that the start of allocatable + # memory be aligned to the largest possible allocation. + config FORCE_MAX_ZONEORDER + int + default 8 if V850E2_SIM85E2C || V850E2_FPGA85E2C + + config V850E_HIGHRES_TIMER + bool "High resolution timer support" + depends V850E_TIMER_D + config TIME_BOOTUP + bool "Time bootup" + depends V850E_HIGHRES_TIMER + + config RESET_GUARD + bool "Reset Guard" + + config LARGE_ALLOCS + bool "Allow allocating large blocks (> 1MB) of memory" + help + Allow the slab memory allocator to keep chains for very large + memory sizes - upto 32MB. You may need this if your system has + a lot of RAM, and you need to able to allocate very large + contiguous chunks. If unsure, say N. + +endmenu + + +############################################################################# + +source init/Kconfig + +############################################################################# + +menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)" + +# config PCI +# bool "PCI support" +# help +# Support for PCI bus. + +source "drivers/pci/Kconfig" + +source "drivers/pcmcia/Kconfig" + +source "drivers/pci/hotplug/Kconfig" + +endmenu + +menu "Executable file formats" + +source "fs/Kconfig.binfmt" + +endmenu + +############################################################################# + +source "drivers/base/Kconfig" + +source drivers/mtd/Kconfig + +source drivers/parport/Kconfig + +#source drivers/pnp/Kconfig + +source drivers/block/Kconfig + +############################################################################# + +menu "Disk device support" + +source "drivers/ide/Kconfig" + +source "drivers/scsi/Kconfig" + +endmenu + +############################################################################# + + +source "drivers/md/Kconfig" + +source "drivers/message/fusion/Kconfig" + +source "drivers/ieee1394/Kconfig" + +source "drivers/message/i2o/Kconfig" + +source "net/Kconfig" + +source "drivers/isdn/Kconfig" + +#source "drivers/telephony/Kconfig" + +# +# input before char - char/joystick depends on it. As does USB. +# +source "drivers/input/Kconfig" + +source "drivers/char/Kconfig" + +#source drivers/misc/Config.in +source "drivers/media/Kconfig" + +source "fs/Kconfig" + +source "drivers/video/Kconfig" + +source "sound/Kconfig" + +source "drivers/usb/Kconfig" + +source "arch/v850/Kconfig.debug" + +source "security/Kconfig" + +source "crypto/Kconfig" + +source "lib/Kconfig" + +############################################################################# diff --git a/arch/v850/Kconfig.debug b/arch/v850/Kconfig.debug new file mode 100644 index 00000000000..4acfb9cca1c --- /dev/null +++ b/arch/v850/Kconfig.debug @@ -0,0 +1,10 @@ +menu "Kernel hacking" + +source "lib/Kconfig.debug" + +config NO_KERNEL_MSG + bool "Suppress Kernel BUG Messages" + help + Do not output any debug BUG messages within the kernel. + +endmenu diff --git a/arch/v850/Makefile b/arch/v850/Makefile new file mode 100644 index 00000000000..6edaed4a310 --- /dev/null +++ b/arch/v850/Makefile @@ -0,0 +1,63 @@ +# +# arch/v850/Makefile +# +# Copyright (C) 2001,02,03 NEC Corporation +# Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org> +# +# 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 +# +# 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. +# + +arch_dir = arch/v850 + +CFLAGS += -mv850e +# r16 is a fixed pointer to the current task +CFLAGS += -ffixed-r16 -mno-prolog-function +CFLAGS += -fno-builtin +CFLAGS += -D__linux__ -DUTS_SYSNAME=\"uClinux\" + +# This prevents the linker from consolidating the .gnu.linkonce.this_module +# section into .text (which the v850 default linker script for -r does for +# some reason) +LDFLAGS_MODULE += --unique=.gnu.linkonce.this_module + +OBJCOPY_FLAGS_BLOB := -I binary -O elf32-little -B v850e + + +head-y := $(arch_dir)/kernel/head.o $(arch_dir)/kernel/init_task.o +core-y += $(arch_dir)/kernel/ +libs-y += $(arch_dir)/lib/ + + +# Deal with the initial contents of the root device +ifdef ROOT_FS_IMAGE +core-y += root_fs_image.o + +# Because the kernel build-system erases all explicit .o build rules, we +# have to use an intermediate target to fool it into building for us. +# This results in it being built anew each time, but that's alright. +root_fs_image.o: root_fs_image_force + +root_fs_image_force: $(ROOT_FS_IMAGE) + $(OBJCOPY) $(OBJCOPY_FLAGS_BLOB) --rename-section .data=.root,alloc,load,readonly,data,contents $< root_fs_image.o +endif + + +prepare: include/asm-$(ARCH)/asm-consts.h + +# Generate constants from C code for use by asm files +arch/$(ARCH)/kernel/asm-consts.s: include/asm include/linux/version.h \ + include/config/MARKER + +include/asm-$(ARCH)/asm-consts.h: arch/$(ARCH)/kernel/asm-consts.s + $(call filechk,gen-asm-offsets) + +CLEAN_FILES += include/asm-$(ARCH)/asm-consts.h \ + arch/$(ARCH)/kernel/asm-consts.s \ + root_fs_image.o diff --git a/arch/v850/README b/arch/v850/README new file mode 100644 index 00000000000..01b98e290d4 --- /dev/null +++ b/arch/v850/README @@ -0,0 +1,32 @@ +This port to the NEC V850E processor supports the following platforms: + + + The gdb v850e simulator (CONFIG_V850E_SIM). + + + The Midas labs RTE-V850E/MA1-CB and RTE-V850E/NB85E-CB evaluation boards + (CONFIG_RTE_CB_MA1 and CONFIG_RTE_CB_NB85E). This support has only been + tested when running with the Multi-debugger monitor ROM (for the Green + Hills Multi debugger). The optional NEC Solution Gear RTE-MOTHER-A + motherboard is also supported, which allows PCI boards to be used + (CONFIG_RTE_MB_A_PCI). + + + The Midas labs RTE-V850E/ME2-CB evaluation board (CONFIG_RTE_CB_ME2). + This has only been tested using a kernel downloaded via an ICE connection + using the Multi debugger. Support for the RTE-MOTHER-A is present, but + hasn't been tested (unlike the other Midas labs cpu boards, the + RTE-V850E/ME2-CB includes an ethernet adaptor). + + + The NEC AS85EP1 V850E evaluation chip/board (CONFIG_V850E_AS85EP1). + + + The NEC `Anna' (board/chip) implementation of the V850E2 processor + (CONFIG_V850E2_ANNA). + + + The sim85e2c and sim85e2s simulators, which are verilog simulations of + the V850E2 NA85E2C/NA85E2S cpu cores (CONFIG_V850E2_SIM85E2C and + CONFIG_V850E2_SIM85E2S). + + + A FPGA implementation of the V850E2 NA85E2C cpu core + (CONFIG_V850E2_FPGA85E2C). + +Porting to anything with a V850E/MA1 or MA2 processor should be simple. +See the file <asm-v850/machdep.h> and the files it includes for an example of +how to add platform/chip-specific support. diff --git a/arch/v850/kernel/Makefile b/arch/v850/kernel/Makefile new file mode 100644 index 00000000000..3930482bddc --- /dev/null +++ b/arch/v850/kernel/Makefile @@ -0,0 +1,40 @@ +# +# arch/v850/kernel/Makefile +# +# Copyright (C) 2001,02,03 NEC Electronics Corporation +# Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org> +# +# 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. +# + +extra-y := head.o init_task.o vmlinux.lds + +obj-y += intv.o entry.o process.o syscalls.o time.o semaphore.o setup.o \ + signal.o irq.o mach.o ptrace.o bug.o +obj-$(CONFIG_MODULES) += module.o v850_ksyms.o +# chip-specific code +obj-$(CONFIG_V850E_MA1) += ma.o +obj-$(CONFIG_V850E_ME2) += me2.o +obj-$(CONFIG_V850E_TEG) += teg.o +obj-$(CONFIG_V850E_AS85EP1) += as85ep1.o +obj-$(CONFIG_V850E2_ANNA) += anna.o +# platform-specific code +obj-$(CONFIG_V850E_SIM) += sim.o simcons.o +obj-$(CONFIG_V850E2_SIM85E2) += sim85e2.o memcons.o +obj-$(CONFIG_V850E2_FPGA85E2C) += fpga85e2c.o memcons.o +obj-$(CONFIG_RTE_CB) += rte_cb.o rte_cb_leds.o +obj-$(CONFIG_RTE_CB_MA1) += rte_ma1_cb.o +obj-$(CONFIG_RTE_CB_ME2) += rte_me2_cb.o +obj-$(CONFIG_RTE_CB_NB85E) += rte_nb85e_cb.o +obj-$(CONFIG_RTE_CB_MULTI) += rte_cb_multi.o +obj-$(CONFIG_RTE_MB_A_PCI) += rte_mb_a_pci.o +obj-$(CONFIG_RTE_GBUS_INT) += gbus_int.o +# feature-specific code +obj-$(CONFIG_V850E_INTC) += v850e_intc.o +obj-$(CONFIG_V850E_TIMER_D) += v850e_timer_d.o v850e_utils.o +obj-$(CONFIG_V850E_CACHE) += v850e_cache.o +obj-$(CONFIG_V850E2_CACHE) += v850e2_cache.o +obj-$(CONFIG_V850E_HIGHRES_TIMER) += highres_timer.o +obj-$(CONFIG_PROC_FS) += procfs.o diff --git a/arch/v850/kernel/anna-rom.ld b/arch/v850/kernel/anna-rom.ld new file mode 100644 index 00000000000..7c54e7e3f1b --- /dev/null +++ b/arch/v850/kernel/anna-rom.ld @@ -0,0 +1,16 @@ +/* Linker script for the Midas labs Anna V850E2 evaluation board + (CONFIG_V850E2_ANNA), with kernel in ROM (CONFIG_ROM_KERNEL). */ + +MEMORY { + /* 8MB of flash ROM. */ + ROM : ORIGIN = 0, LENGTH = 0x00800000 + + /* 1MB of static RAM. This memory is mirrored 64 times. */ + SRAM : ORIGIN = SRAM_ADDR, LENGTH = SRAM_SIZE + /* 64MB of DRAM. */ + SDRAM : ORIGIN = SDRAM_ADDR, LENGTH = SDRAM_SIZE +} + +SECTIONS { + ROMK_SECTIONS(ROM, SRAM) +} diff --git a/arch/v850/kernel/anna.c b/arch/v850/kernel/anna.c new file mode 100644 index 00000000000..6aaeab5e8a4 --- /dev/null +++ b/arch/v850/kernel/anna.c @@ -0,0 +1,208 @@ +/* + * arch/v850/kernel/anna.c -- Anna V850E2 evaluation chip/board + * + * Copyright (C) 2002,03 NEC Electronics Corporation + * Copyright (C) 2002,03 Miles Bader <miles@gnu.org> + * + * 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. + * + * Written by Miles Bader <miles@gnu.org> + */ + +#include <linux/config.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/init.h> +#include <linux/bootmem.h> +#include <linux/major.h> +#include <linux/irq.h> + +#include <asm/machdep.h> +#include <asm/atomic.h> +#include <asm/page.h> +#include <asm/v850e_timer_d.h> +#include <asm/v850e_uart.h> + +#include "mach.h" + + +/* SRAM and SDRAM are vaguely contiguous (with a big hole in between; see + mach_reserve_bootmem for details); use both as one big area. */ +#define RAM_START SRAM_ADDR +#define RAM_END (SDRAM_ADDR + SDRAM_SIZE) + +/* The bits of this port are connected to an 8-LED bar-graph. */ +#define LEDS_PORT 0 + + +static void anna_led_tick (void); + + +void __init mach_early_init (void) +{ + ANNA_ILBEN = 0; + + V850E2_CSC(0) = 0x402F; + V850E2_CSC(1) = 0x4000; + V850E2_BPC = 0; + V850E2_BSC = 0xAAAA; + V850E2_BEC = 0; + +#if 0 + V850E2_BHC = 0xFFFF; /* icache all memory, dcache all */ +#else + V850E2_BHC = 0; /* cache no memory */ +#endif + V850E2_BCT(0) = 0xB088; + V850E2_BCT(1) = 0x0008; + V850E2_DWC(0) = 0x0027; + V850E2_DWC(1) = 0; + V850E2_BCC = 0x0006; + V850E2_ASC = 0; + V850E2_LBS = 0x0089; + V850E2_SCR(3) = 0x21A9; + V850E2_RFS(3) = 0x8121; + + v850e_intc_disable_irqs (); +} + +void __init mach_setup (char **cmdline) +{ |