patch-2.2.14 linux/arch/ppc/kernel/setup.c
Next file: linux/arch/ppc/kernel/signal.c
Previous file: linux/arch/ppc/kernel/ptrace.c
Back to the patch index
Back to the overall index
- Lines: 108
- Date:
Tue Jan 4 10:12:12 2000
- Orig file:
v2.2.13/linux/arch/ppc/kernel/setup.c
- Orig date:
Tue Jan 4 11:10:32 2000
diff -u --recursive --new-file v2.2.13/linux/arch/ppc/kernel/setup.c linux/arch/ppc/kernel/setup.c
@@ -1,5 +1,5 @@
/*
- * $Id: setup.c,v 1.132.2.5 1999/09/11 03:32:50 paulus Exp $
+ * $Id: setup.c,v 1.132.2.6 1999/10/19 04:32:33 paulus Exp $
* Common prep/pmac/chrp boot and setup code.
*/
@@ -62,6 +62,12 @@
unsigned long r6,
unsigned long r7);
+extern void gemini_init(unsigned long r3,
+ unsigned long r4,
+ unsigned long r5,
+ unsigned long r6,
+ unsigned long r7);
+
extern boot_infos_t *boot_infos;
extern char cmd_line[512];
char saved_command_line[256];
@@ -342,7 +348,6 @@
identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7)
{
-
#ifdef __SMP__
if ( first_cpu_booted ) return 0;
#endif /* __SMP__ */
@@ -403,6 +408,8 @@
_machine = _MACH_fads;
#elif defined(CONFIG_APUS)
_machine = _MACH_apus;
+#elif defined(CONFIG_GEMINI)
+ _machine = _MACH_gemini;
#else
#error "Machine not defined correctly"
#endif /* CONFIG_APUS */
@@ -488,6 +495,11 @@
mbx_init(r3, r4, r5, r6, r7);
break;
#endif
+#ifdef CONFIG_GEMINI
+ case _MACH_gemini:
+ gemini_init(r3, r4, r5, r6, r7);
+ break;
+#endif
default:
printk("Unknown machine type in identify_machine!\n");
}
@@ -497,6 +509,28 @@
extern int __map_without_bats;
__map_without_bats = 1;
}
+
+ /* Look for mem= option on command line */
+ if (strstr(cmd_line, "mem=")) {
+ char *p, *q;
+ unsigned long maxmem = 0;
+ extern unsigned long __max_memory;
+
+ for (q = cmd_line; (p = strstr(q, "mem=")) != 0; ) {
+ q = p + 4;
+ if (p > cmd_line && p[-1] != ' ')
+ continue;
+ maxmem = simple_strtoul(q, &q, 0);
+ if (*q == 'k' || *q == 'K') {
+ maxmem <<= 10;
+ ++q;
+ } else if (*q == 'm' || *q == 'M') {
+ maxmem <<= 20;
+ ++q;
+ }
+ }
+ __max_memory = maxmem;
+ }
return 0;
}
@@ -522,7 +556,7 @@
}
__initfunc(void setup_arch(char **cmdline_p,
- unsigned long * memory_start_p, unsigned long * memory_end_p))
+ unsigned long * memory_start_p, unsigned long * memory_end_p))
{
extern int panic_timeout;
extern char _etext[], _edata[];
@@ -532,8 +566,11 @@
#ifdef CONFIG_XMON
extern void xmon_map_scc(void);
+ char *p;
+
xmon_map_scc();
- if (strstr(cmd_line, "xmon"))
+ p = strstr(cmd_line, "xmon");
+ if (p != NULL && (p == cmd_line || p[-1] == ' '))
xmon(0);
#endif /* CONFIG_XMON */
@@ -547,6 +584,7 @@
/* Save unparsed command line copy for /proc/cmdline */
strcpy(saved_command_line, cmd_line);
+
*cmdline_p = cmd_line;
*memory_start_p = find_available_memory();
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)