patch-2.3.99-pre6 linux/init/main.c

Next file: linux/ipc/shm.c
Previous file: linux/include/video/fbcon.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.99-pre5/linux/init/main.c linux/init/main.c
@@ -47,6 +47,10 @@
 #  include <asm/mtrr.h>
 #endif
 
+#ifdef CONFIG_3215_CONSOLE
+extern int con3215_activate(void);
+#endif
+
 #ifdef CONFIG_MAC
 extern void nubus_init(void);
 #endif
@@ -69,7 +73,7 @@
  * To avoid associated bogus bug reports, we flatly refuse to compile
  * with a gcc that is known to be too old from the very beginning.
  */
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
 #error sorry, your GCC is too old. It builds incorrect kernels.
 #endif
 
@@ -246,6 +250,27 @@
 	{ "pf",		0x2f00 },
 	{ "apblock", APBLOCK_MAJOR << 8},
 	{ "ddv", DDV_MAJOR << 8},
+	{ "jsfd",    JSFD_MAJOR << 8},
+#ifdef CONFIG_MDISK
+        { "mnda", (MDISK_MAJOR << MINORBITS)},
+        { "mndb", (MDISK_MAJOR << MINORBITS) + 1},
+        { "mndc", (MDISK_MAJOR << MINORBITS) + 2},
+        { "mndd", (MDISK_MAJOR << MINORBITS) + 3},
+        { "mnde", (MDISK_MAJOR << MINORBITS) + 4},
+        { "mndf", (MDISK_MAJOR << MINORBITS) + 5},
+        { "mndg", (MDISK_MAJOR << MINORBITS) + 6},
+        { "mndh", (MDISK_MAJOR << MINORBITS) + 7},
+#endif
+#ifdef CONFIG_DASD
+	{ "dasda", (DASD_MAJOR << MINORBITS) },
+	{ "dasdb", (DASD_MAJOR << MINORBITS) + (1 << 2) },
+	{ "dasdc", (DASD_MAJOR << MINORBITS) + (2 << 2) },
+	{ "dasdd", (DASD_MAJOR << MINORBITS) + (3 << 2) },
+	{ "dasde", (DASD_MAJOR << MINORBITS) + (4 << 2) },
+	{ "dasdf", (DASD_MAJOR << MINORBITS) + (5 << 2) },
+	{ "dasdg", (DASD_MAJOR << MINORBITS) + (6 << 2) },
+	{ "dasdh", (DASD_MAJOR << MINORBITS) + (7 << 2) },
+#endif
 	{ NULL, 0 }
 };
 
@@ -395,7 +420,7 @@
  */
 static void __init parse_options(char *line)
 {
-	char *next;
+	char *next,*quote;
 	int args, envs;
 
 	if (!*line)
@@ -404,8 +429,20 @@
 	envs = 1;	/* TERM is set to 'linux' by default */
 	next = line;
 	while ((line = next) != NULL) {
-		if ((next = strchr(line,' ')) != NULL)
-			*next++ = 0;
+                quote = strchr(line,'"');
+                next = strchr(line, ' ');
+                while (next != NULL && quote != NULL && quote < next) {
+                        /* we found a left quote before the next blank
+                         * now we have to find the matching right quote
+                         */
+                        next = strchr(quote+1, '"');
+                        if (next != NULL) {
+                                quote = strchr(next+1, '"');
+                                next = strchr(next+1, ' ');
+                        }
+                }
+                if (next != NULL)
+                        *next++ = 0;
 		if (!strncmp(line,"init=",5)) {
 			line += 5;
 			execute_command = line;
@@ -431,6 +468,7 @@
 		} else {
 			if (args >= MAX_INIT_ARGS)
 				break;
+                        if(*line)
 			argv_init[++args] = line;
 		}
 	}
@@ -442,7 +480,7 @@
 extern void setup_arch(char **);
 extern void cpu_idle(void);
 
-#ifndef __SMP__
+#ifndef CONFIG_SMP
 
 #ifdef CONFIG_X86_IO_APIC
 static void __init smp_init(void)
@@ -520,6 +558,9 @@
 #endif
 	mem_init();
 	kmem_cache_sizes_init();
+#ifdef CONFIG_3215_CONSOLE
+        con3215_activate();
+#endif
 #ifdef CONFIG_PROC_FS
 	proc_root_init();
 #endif
@@ -527,14 +568,14 @@
 
 	fork_init(mempages);
 	filescache_init();
-	dcache_init();
+	dcache_init(mempages);
 	vma_init();
 	buffer_init(mempages);
 	page_cache_init(mempages);
 	kiobuf_setup();
 	signals_init();
 	bdev_init();
-	inode_init();
+	inode_init(mempages);
 	file_table_init();
 #if defined(CONFIG_SYSVIPC)
 	ipc_init();

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)