summaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/machvec.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-05-15 15:38:30 +0900
committerPaul Mundt <lethal@hera.kernel.org>2007-06-08 02:43:40 +0000
commitfd8f20e8e2f8f1d9201086bff444c8d35f0a6a45 (patch)
tree0823660fdd2ec53c6dede452d0802f54119bbde6 /arch/sh/kernel/machvec.c
parent82f81f4784479df17a80caff4a7156da0a2f7dea (diff)
downloadlinux-fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45.tar.gz
linux-fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45.tar.bz2
linux-fd8f20e8e2f8f1d9201086bff444c8d35f0a6a45.zip
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: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/machvec.c')
-rw-r--r--arch/sh/kernel/machvec.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c
index e8121de5faa4..23c5948f0124 100644
--- a/arch/sh/kernel/machvec.c
+++ b/arch/sh/kernel/machvec.c
@@ -35,6 +35,8 @@ static struct sh_machine_vector * __init get_mv_byname(const char *name)
return NULL;
}
+static unsigned int __initdata machvec_selected;
+
static int __init early_parse_mv(char *from)
{
char mv_name[MV_NAME_SIZE] = "";
@@ -55,9 +57,15 @@ static int __init early_parse_mv(char *from)
mv_name[mv_len] = '\0';
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);
if (unlikely(!mvp)) {
- printk("Available vectors:\n\n\t");
+ printk("Available vectors:\n\n\t'%s', ", sh_mv.mv_name);
for_each_mv(mvp)
printk("'%s', ", mvp->mv_name);
printk("\n\n");
@@ -76,7 +84,7 @@ void __init sh_mv_setup(void)
* Only overload the machvec if one hasn't been selected on
* the command line with sh_mv=
*/
- if (strcmp(sh_mv.mv_name, "Unknown") != 0) {
+ if (!machvec_selected) {
unsigned long machvec_size;
machvec_size = ((unsigned long)&__machvec_end -