2 * $Id: mbx_setup.c,v 1.4 1998/11/15 19:58:55 cort Exp $
4 * linux/arch/ppc/kernel/setup.c
6 * Copyright (C) 1995 Linus Torvalds
7 * Adapted from 'alpha' version by Gary Thomas
8 * Modified by Cort Dougan (cort@cs.nmt.edu)
9 * Modified for MBX using prep/chrp/pmac functions by Dan (dmalek@jlc.net)
13 * bootup setup stuff..
16 #include <linux/config.h>
17 #include <linux/errno.h>
18 #include <linux/sched.h>
19 #include <linux/kernel.h>
21 #include <linux/stddef.h>
22 #include <linux/unistd.h>
23 #include <linux/ptrace.h>
24 #include <linux/malloc.h>
25 #include <linux/user.h>
26 #include <linux/a.out.h>
27 #include <linux/tty.h>
28 #include <linux/major.h>
29 #include <linux/interrupt.h>
30 #include <linux/reboot.h>
31 #include <linux/init.h>
32 #include <linux/blk.h>
33 #include <linux/ioport.h>
36 #include <asm/processor.h>
37 #include <asm/residual.h>
39 #include <asm/pgtable.h>
43 extern unsigned long loops_per_sec
;
45 unsigned long empty_zero_page
[1024];
47 #ifdef CONFIG_BLK_DEV_RAM
48 extern int rd_doload
; /* 1 = load ramdisk, 0 = don't load */
49 extern int rd_prompt
; /* 1 = prompt for ramdisk, 0 = don't prompt */
50 extern int rd_image_start
; /* starting block # of image */
53 extern char saved_command_line
[256];
55 extern unsigned long find_available_memory(void);
56 extern void m8xx_cpm_reset(uint
);
58 /* this really does make things cleaner -- Cort */
59 void __init
powermac_init(void)
62 void __init
adbdev_init(void)
66 void __init
mbx_ide_init_hwif_ports(ide_ioreg_t
*p
, ide_ioreg_t base
, int *irq
)
72 if (base
!= 0) /* Only map the first ATA flash drive */
75 base
= (unsigned long) ioremap(PCMCIA_MEM_ADDR
, 0x200);
76 for (i
= 0; i
< 8; ++i
)
78 *p
= ++base
; /* Does not matter */
85 mbx_setup_arch(unsigned long * memory_start_p
, unsigned long * memory_end_p
))
88 extern char cmd_line
[];
90 cpm_page
= *memory_start_p
;
91 *memory_start_p
+= PAGE_SIZE
;
94 "%s root=/dev/nfs nfsroot=/sys/mbxroot",
96 printk("Boot arguments: %s\n", cmd_line
);
98 /* Reset the Communication Processor Module.
100 m8xx_cpm_reset(cpm_page
);
103 ROOT_DEV
= to_kdev_t(0x0301); /* hda1 */
106 #ifdef CONFIG_BLK_DEV_INITRD
108 ROOT_DEV
= to_kdev_t(0x0200); /* floppy */
113 /* initrd_start and size are setup by boot/head.S and kernel/head.S */
116 if (initrd_end
> *memory_end_p
)
118 printk("initrd extends beyond end of memory "
119 "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
120 initrd_end
,*memory_end_p
);
127 request_region(0x20,0x20,"pic1");
128 request_region(0xa0,0x20,"pic2");
129 request_region(0x00,0x20,"dma1");
130 request_region(0x40,0x20,"timer");
131 request_region(0x80,0x10,"dma page reg");
132 request_region(0xc0,0x20,"dma2");
140 extern void xmon(void *);
143 machine_restart(NULL
);