提交 fd8f20e8 编写于 作者: P Paul Mundt 提交者: Paul Mundt

sh: Rip out special unknown machvec.

This kills off the BareCPU board as a "special" machvec, rather,
we leave this as a default for when no other vector is available,
or when we want to use it in combination with other vectors for
testing with generic ops. As sh_mv is copied out anyways (or
overloaded when an alternate vector is explicitly selected), this
doesn't consume any additional memory.

The generic machvec can be forcibly selected with sh_mv=generic,
or by not having any other boards enabled.
Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
上级 82f81f47
...@@ -381,18 +381,6 @@ config SH_LBOX_RE2 ...@@ -381,18 +381,6 @@ config SH_LBOX_RE2
help help
Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2. Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.
config SH_UNKNOWN
bool "BareCPU"
help
"Bare CPU" aka "unknown" means an SH-based system which is not one
of the specific ones mentioned above, which means you need to enter
all sorts of stuff like CONFIG_MEMORY_START because the config
system doesn't already know what it is. You get a machine vector
without any platform-specific code in it, so things like the RTC may
not work.
This option is for the early stages of porting to a new machine.
endmenu endmenu
source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
...@@ -401,7 +389,7 @@ source "arch/sh/boards/renesas/r7780rp/Kconfig" ...@@ -401,7 +389,7 @@ source "arch/sh/boards/renesas/r7780rp/Kconfig"
config CF_ENABLER config CF_ENABLER
bool "Compact Flash Enabler support" bool "Compact Flash Enabler support"
depends on SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_SH03 depends on SH_SOLUTION_ENGINE || SH_SH03
---help--- ---help---
Compact Flash is a small, removable mass storage device introduced Compact Flash is a small, removable mass storage device introduced
in 1994 originally as a PCMCIA device. If you say `Y' here, you in 1994 originally as a PCMCIA device. If you say `Y' here, you
......
...@@ -113,7 +113,6 @@ machdir-$(CONFIG_SH_SHMIN) += shmin ...@@ -113,7 +113,6 @@ machdir-$(CONFIG_SH_SHMIN) += shmin
machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206
machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619
machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2
machdir-$(CONFIG_SH_UNKNOWN) += unknown
incdir-y := $(notdir $(machdir-y)) incdir-y := $(notdir $(machdir-y))
......
#
# Makefile for unknown SH boards
#
obj-y := setup.o
/*
* linux/arch/sh/boards/unknown/setup.c
*
* Copyright (C) 2002 Paul Mundt
*
* May be copied or modified under the terms of the GNU General Public
* License. See linux/COPYING for more information.
*
* Setup code for an unknown machine (internal peripherals only)
*
* This is the simplest of all boards, and serves only as a quick and dirty
* method to start debugging a new board during bring-up until proper board
* setup code is written.
*/
#include <linux/init.h>
#include <asm/machvec.h>
static struct sh_machine_vector mv_unknown __initmv = {
.mv_name = "Unknown",
};
...@@ -75,11 +75,7 @@ static int __init cf_init_default(void) ...@@ -75,11 +75,7 @@ static int __init cf_init_default(void)
#if defined(CONFIG_CPU_SH4) #if defined(CONFIG_CPU_SH4)
allocate_cf_area(); allocate_cf_area();
#endif #endif
#if defined(CONFIG_SH_UNKNOWN)
/* This should be done in each board's init_xxx_irq. */
make_imask_irq(14);
disable_irq(14);
#endif
return 0; return 0;
} }
......
...@@ -35,6 +35,8 @@ static struct sh_machine_vector * __init get_mv_byname(const char *name) ...@@ -35,6 +35,8 @@ static struct sh_machine_vector * __init get_mv_byname(const char *name)
return NULL; return NULL;
} }
static unsigned int __initdata machvec_selected;
static int __init early_parse_mv(char *from) static int __init early_parse_mv(char *from)
{ {
char mv_name[MV_NAME_SIZE] = ""; char mv_name[MV_NAME_SIZE] = "";
...@@ -55,9 +57,15 @@ static int __init early_parse_mv(char *from) ...@@ -55,9 +57,15 @@ static int __init early_parse_mv(char *from)
mv_name[mv_len] = '\0'; mv_name[mv_len] = '\0';
from = mv_end; from = mv_end;
machvec_selected = 1;
/* Boot with the generic vector */
if (strcmp(mv_name, "generic") == 0)
return 0;
mvp = get_mv_byname(mv_name); mvp = get_mv_byname(mv_name);
if (unlikely(!mvp)) { if (unlikely(!mvp)) {
printk("Available vectors:\n\n\t"); printk("Available vectors:\n\n\t'%s', ", sh_mv.mv_name);
for_each_mv(mvp) for_each_mv(mvp)
printk("'%s', ", mvp->mv_name); printk("'%s', ", mvp->mv_name);
printk("\n\n"); printk("\n\n");
...@@ -76,7 +84,7 @@ void __init sh_mv_setup(void) ...@@ -76,7 +84,7 @@ void __init sh_mv_setup(void)
* Only overload the machvec if one hasn't been selected on * Only overload the machvec if one hasn't been selected on
* the command line with sh_mv= * the command line with sh_mv=
*/ */
if (strcmp(sh_mv.mv_name, "Unknown") != 0) { if (!machvec_selected) {
unsigned long machvec_size; unsigned long machvec_size;
machvec_size = ((unsigned long)&__machvec_end - machvec_size = ((unsigned long)&__machvec_end -
......
...@@ -47,7 +47,7 @@ struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; ...@@ -47,7 +47,7 @@ struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, };
* The machine vector. First entry in .machvec.init, or clobbered by * The machine vector. First entry in .machvec.init, or clobbered by
* sh_mv= on the command line, prior to .machvec.init teardown. * sh_mv= on the command line, prior to .machvec.init teardown.
*/ */
struct sh_machine_vector sh_mv = { .mv_name = "Unknown", }; struct sh_machine_vector sh_mv = { .mv_name = "generic", };
#ifdef CONFIG_VT #ifdef CONFIG_VT
struct screen_info screen_info; struct screen_info screen_info;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册