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
- Lines: 245
- Date:
Sat Aug 16 09:51:08 1997
- Orig file:
v2.1.50/linux/arch/ppc/kernel/prep_setup.c
- Orig date:
Mon Aug 4 16:25:36 1997
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