patch-2.1.51 linux/arch/ppc/kernel/prep_setup.c

Next file: linux/arch/ppc/kernel/prep_time.c
Previous file: linux/arch/ppc/kernel/ppc_ksyms.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.50/linux/arch/ppc/kernel/prep_setup.c linux/arch/ppc/kernel/prep_setup.c
@@ -26,6 +26,8 @@
 #include <linux/interrupt.h>
 #include <linux/reboot.h>
 #include <linux/init.h>
+#include <linux/blk.h>
+#include <linux/ioport.h>
 
 #include <asm/mmu.h>
 #include <asm/processor.h>
@@ -42,7 +44,7 @@
 extern unsigned long loops_per_sec;
 
 unsigned long empty_zero_page[1024];
-unsigned char aux_device_present;
+extern unsigned char aux_device_present;
 
 #ifdef CONFIG_BLK_DEV_RAM
 extern int rd_doload;		/* 1 = load ramdisk, 0 = don't load */
@@ -50,19 +52,8 @@
 extern int rd_image_start;	/* starting block # of image */
 #endif
 
-/* copy of the residual data */
-RESIDUAL res;
-/* ptr to residual data from hw, must be initialized so not in bss (gets cleared )*/
-unsigned long resptr = 0;
-int _machine;
-extern unsigned long _TotalMemory;
-
-#define COMMAND_LINE_SIZE 256
-static char command_line[COMMAND_LINE_SIZE] = { 0, };
-char saved_command_line[COMMAND_LINE_SIZE];
-#ifdef HASHSTATS
-unsigned long evicts;
-#endif
+
+extern char saved_command_line[256];
 
 struct screen_info screen_info = {
 	0, 25,			/* orig-x, orig-y */
@@ -76,49 +67,31 @@
 	16			/* orig-video-points */
 };
 
-void machine_halt(void)
+
+/*
+ * these are here to get by until the pmac/prep merge is done
+ */
+int pmac_display_supported(char *name)
 {
-	machine_restart(NULL);
+	return 0;
 }
-
-void machine_power_off(void)
+int sd_find_target(void *a, int b)
 {
-	machine_restart(NULL);
+	return 0;
 }
-
-void machine_restart(char *cmd)
+void pmac_find_display(void)
 {
-	unsigned char ctl;
-	unsigned long flags;
-	unsigned long i = 10000;
-	
-	_disable_interrupts();
-
-	/* set exception prefix high - to the prom */
-	save_flags( flags );
-	restore_flags( flags|MSR_IP );
-
-	/* make sure bit 0 (reset) is a 0 */
-	outb( inb(0x92) & ~1L , 0x92 );
-	/* signal a reset to system control port A - soft reset */
-	outb( inb(0x92) | 1 , 0x92 );
-
-	while ( i != 0 ) i++;
-	panic("restart failed\n");
 }
 
 int
-get_cpuinfo(char *buffer)
+prep_get_cpuinfo(char *buffer)
 {
 	extern char *Motherboard_map_name;
+	extern RESIDUAL res;
 	int i;
 	int pvr = _get_PVR();
 	int len;
 	char *model;
-	PTE *ptr;
-	unsigned long kptes = 0, uptes = 0, overflow = 0;
-	unsigned int ti;
-  
   
 	switch (pvr>>16)
 	{
@@ -226,8 +199,6 @@
 	/* L2 */
 	if ( (inb(IBM_EQUIP_PRESENT) & 1) == 0) /* l2 present */
 	{
-		int size;
-    
 		len += sprintf(buffer+len,"l2\t\t: %dkB %s\n",
 			       ((inb(IBM_L2_STATUS) >> 5) & 1) ? 512 : 256,
 			       (inb(IBM_SYS_CTL) & 64) ? "enabled" : "disabled");
@@ -246,61 +217,25 @@
 	 * Ooh's and aah's info about zero'd pages in idle task
 	 */ 
 	{
-		extern unsigned int zerocount, zerototal, zeropage_hits;
+		extern unsigned int zerocount, zerototal, zeropage_hits,zeropage_calls;
 		len += sprintf(buffer+len,"zero pages\t: total %u (%uKb) "
-			       "current: %u (%uKb) hits: %u\n",
+			       "current: %u (%uKb) hits: %u/%u (%lu%%)\n",
 			       zerototal, (zerototal*PAGE_SIZE)>>10,
 			       zerocount, (zerocount*PAGE_SIZE)>>10,
-			       zeropage_hits);
-	}
-
-
-	/* ram/hash table info */
-	len += sprintf(buffer+len,"hash table\t: %dkB (%dk buckets)\n",
-		       Hash_size>>10,(Hash_size/(sizeof(PTE)*8)) >> 10);
-
-	/* if booted print info about hash table use (overflows, etc) */
-#ifdef HASHSTATS
-	for ( ptr = Hash ; ptr < (PTE *)(Hash+Hash_size) ; ptr++)
-	{
-		if (ptr->v)
-		{
-			/* user not allowed read or write */
-			if (ptr->pp == PP_RWXX)
-				kptes++;
-			else
-				uptes++;
-			if (ptr->h == 1)
-				overflow++;
-		}
+			       zeropage_hits,zeropage_calls,
+			       /* : 1 below is so we don't div by zero */
+			       (zeropage_hits*100) /
+			            ((zeropage_calls)?zeropage_calls:1));
 	}
-	/*len+=sprintf(buffer+len,"Hash %x Hash+Hash_size %x MemEnd %x\n",
-	  Hash,Hash+Hash_size,KERNELBASE+_TotalMemory);*/
-	/*len += sprintf(buffer+len,"PTEs: (user/kernel/max) %d (%d%%)/%d "
-	  "(%d%%)/%d (%d%% full)\n",
-	  uptes,(uptes*100)/(Hash_size/sizeof(PTE)),
-	  kptes,(kptes*100)/(Hash_size/sizeof(PTE)),
-	  Hash_size/sizeof(PTE),
-	  ((uptes+kptes)*100)/(Hash_size/sizeof(PTE)));
-	  len += sprintf(buffer+len,"Current Ovflw PTE's: %d Total Evicts: %u\n",
-	  overflow,evicts);*/
-#endif /* HASHSTATS */
 	return len;
 }
 
-__initfunc(unsigned long
-bios32_init(unsigned long memory_start, unsigned long memory_end))
-{
-	return memory_start;
-}
-
 __initfunc(void
-setup_arch(char **cmdline_p, unsigned long * memory_start_p,
+prep_setup_arch(char **cmdline_p, unsigned long * memory_start_p,
 	   unsigned long * memory_end_p))
 {
 	extern char cmd_line[];
 	extern char _etext[], _edata[], _end[];
-	unsigned char reg;
 	extern int panic_timeout;
 
 	/* Save unparsed command line copy for /proc/cmdline */
@@ -308,13 +243,13 @@
 	*cmdline_p = cmd_line;
   
 	*memory_start_p = (unsigned long) Hash+Hash_size;
-	(unsigned long *)*memory_end_p = (unsigned long *)(_TotalMemory+KERNELBASE);
+	(unsigned long *)*memory_end_p = (unsigned long *)(res.TotalMemory+KERNELBASE);
 
 	/* init to some ~sane value until calibrate_delay() runs */
 	loops_per_sec = 50000000;
 	
 	/* reboot on panic */	
-	/*panic_timeout = 180;*/
+	panic_timeout = 180;
 	
 	init_task.mm->start_code = PAGE_OFFSET;
 	init_task.mm->end_code = (unsigned long) _etext;
@@ -332,23 +267,7 @@
 		ROOT_DEV = to_kdev_t(0x0801); /* sda1 */
 		break;
 	}
-	/*ROOT_DEV = to_kdev_t(0x0811);*/ /* sdb1 */
-#if 0
-	strcpy(cmd_line+strlen(cmd_line),"console=1,9600,n8");
-#endif
 	
-#if 0  
-	if ( _machine == _MACH_Motorola )
-	{
-		/* get root via nfs from gordito -- only used for testing */
-		ROOT_DEV = MKDEV(UNNAMED_MAJOR, 255);	/* nfs */
-		/*nfsaddrs=myip:serverip:gateip:netmaskip:clientname*/
-		strcpy(cmd_line+strlen(cmd_line),
-		       "nfsaddrs=129.138.6.13:129.138.6.101:129.138.6.1:255.255.255.0:"
-		       "pandora nfsroot=/usr/src/root/");
-	}
-#endif
-  
 #ifdef CONFIG_BLK_DEV_RAM
 #if 0
 	ROOT_DEV = to_kdev_t(0x0200); /* floppy */  
@@ -356,7 +275,20 @@
 	rd_doload = 1;
 	rd_image_start = 0;
 #endif
+	/* initrd_start and size are setup by boot/head.S and kernel/head.S */
+	if ( initrd_start )
+	{
+		if (initrd_end > *memory_end_p)
+		{
+			printk("initrd extends beyond end of memory "
+			       "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
+			       initrd_end,*memory_end_p);
+			initrd_start = 0;
+		}
+	}
 #endif
+
+	printk("Boot arguments: %s\n", cmd_line);
 	
 	request_region(0x20,0x20,"pic1");
 	request_region(0xa0,0x20,"pic2");
@@ -365,4 +297,3 @@
 	request_region(0x80,0x10,"dma page reg");
 	request_region(0xc0,0x20,"dma2");
 }
-

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov