patch-2.2.18 linux/init/main.c
Next file: linux/kernel/dma.c
Previous file: linux/include/scsi/scsi_ioctl.h
Back to the patch index
Back to the overall index
- Lines: 261
- Date:
Wed Nov 8 23:06:45 2000
- Orig file:
v2.2.17/init/main.c
- Orig date:
Sat Sep 9 18:42:51 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/init/main.c linux/init/main.c
@@ -22,10 +22,15 @@
#include <linux/smp_lock.h>
#include <linux/blk.h>
#include <linux/hdreg.h>
+#include <linux/init.h>
#include <asm/io.h>
#include <asm/bugs.h>
+#ifdef CONFIG_ARCH_S390
+#include <asm/s390mach.h>
+#endif
+
#ifdef CONFIG_PCI
#include <linux/pci.h>
#endif
@@ -42,10 +47,6 @@
# include <asm/mtrr.h>
#endif
-#ifdef CONFIG_APM
-#include <linux/apm_bios.h>
-#endif
-
#ifdef CONFIG_DASD
#include <asm/dasd.h>
#endif
@@ -107,8 +108,12 @@
extern void ioapic_pirq_setup(char *str, int *ints);
extern void ioapic_setup(char *str, int *ints);
#endif
+#ifdef CONFIG_MICROCODE
+extern int microcode_init(void);
+#endif
extern void no_scroll(char *str, int *ints);
extern void kbd_reset_setup(char *str, int *ints);
+extern void aux_reconnect_setup(char *str, int *ints);
extern void panic_setup(char *str, int *ints);
extern void bmouse_setup(char *str, int *ints);
extern void msmouse_setup(char *str, int *ints);
@@ -224,6 +229,7 @@
extern void aha1542_setup(char *str, int *ints);
extern void gdth_setup(char *str, int *ints);
extern void aic7xxx_setup(char *str, int *ints);
+extern void ips_setup(char *str, int *ints);
extern void AM53C974_setup(char *str, int *ints);
extern void BusLogic_Setup(char *str, int *ints);
extern void ncr53c8xx_setup(char *str, int *ints);
@@ -399,6 +405,10 @@
extern void md_setup(char *str,int *ints) __init;
#endif
+#ifdef CONFIG_AGP
+extern int agp_init (void);
+#endif
+
/*
* Boot command-line arguments
*/
@@ -753,6 +763,9 @@
#ifdef CONFIG_VT
{ "kbd-reset", kbd_reset_setup },
#endif
+#if defined(CONFIG_PSMOUSE) && defined (CONFIG_VT)
+ { "psaux-reconnect", aux_reconnect_setup },
+#endif
#ifdef CONFIG_BUGi386
{ "no-hlt", no_halt },
{ "no387", no_387 },
@@ -862,6 +875,9 @@
#ifdef CONFIG_SCSI_AIC7XXX
{ "aic7xxx=", aic7xxx_setup},
#endif
+#ifdef CONFIG_SCSI_IPS
+ { "ips=", ips_setup},
+#endif
#ifdef CONFIG_SCSI_BUSLOGIC
{ "BusLogic=", BusLogic_Setup},
#endif
@@ -1080,9 +1096,6 @@
#ifdef CONFIG_PARIDE_PG
{ "pg.", pg_setup },
#endif
-#ifdef CONFIG_APM
- { "apm=", apm_setup },
-#endif
#ifdef CONFIG_N2
{ "n2=", n2_setup },
#endif
@@ -1108,6 +1121,7 @@
{ 0, 0 }
};
+
#ifdef CONFIG_BLK_DEV_RAM
static void __init ramdisk_start_setup(char *str, int *ints)
{
@@ -1136,6 +1150,7 @@
static int __init checksetup(char *line)
{
+ struct new_kernel_param *p;
int i, ints[11];
#ifdef CONFIG_BLK_DEV_IDE
@@ -1159,14 +1174,25 @@
return 1;
}
}
+
+ /* Now handle new-style __setup parameters */
+ p = &__setup_start;
+ while (p < &__setup_end) {
+ int n = strlen(p->str);
+ if (!strncmp(line,p->str,n)) {
+ if (p->setup_func(line+n))
+ return 1;
+ }
+ p++;
+ }
return 0;
}
/* this should be approx 2 Bo*oMips to start (note initial shift), and will
still work even if initially too large, it will just take slightly longer */
-unsigned long loops_per_sec = (1<<12);
+unsigned long loops_per_jiffy = (1<<12);
-/* This is the number of bits of precision for the loops_per_second. Each
+/* This is the number of bits of precision for the loops_per_jiffy. Each
bit takes on average 1.5/HZ seconds. This (like the original) is a little
better than 1% */
#define LPS_PREC 8
@@ -1176,42 +1202,40 @@
unsigned long ticks, loopbit;
int lps_precision = LPS_PREC;
- loops_per_sec = (1<<12);
+ loops_per_jiffy = (1<<12);
printk("Calibrating delay loop... ");
- while (loops_per_sec <<= 1) {
+ while (loops_per_jiffy <<= 1) {
/* wait for "start of" clock tick */
ticks = jiffies;
while (ticks == jiffies)
/* nothing */;
/* Go .. */
ticks = jiffies;
- __delay(loops_per_sec);
+ __delay(loops_per_jiffy);
ticks = jiffies - ticks;
if (ticks)
break;
}
-/* Do a binary approximation to get loops_per_second set to equal one clock
+/* Do a binary approximation to get loops_per_jiffy set to equal one clock
(up to lps_precision bits) */
- loops_per_sec >>= 1;
- loopbit = loops_per_sec;
+ loops_per_jiffy >>= 1;
+ loopbit = loops_per_jiffy;
while ( lps_precision-- && (loopbit >>= 1) ) {
- loops_per_sec |= loopbit;
+ loops_per_jiffy |= loopbit;
ticks = jiffies;
while (ticks == jiffies);
ticks = jiffies;
- __delay(loops_per_sec);
+ __delay(loops_per_jiffy);
if (jiffies != ticks) /* longer than 1 tick */
- loops_per_sec &= ~loopbit;
+ loops_per_jiffy &= ~loopbit;
}
-/* finally, adjust loops per second in terms of seconds instead of clocks */
- loops_per_sec *= HZ;
/* Round the value and print it */
printk("%lu.%02lu BogoMIPS\n",
- (loops_per_sec+2500)/500000,
- ((loops_per_sec+2500)/5000) % 100);
+ loops_per_jiffy/(500000/HZ),
+ (loops_per_jiffy/(5000/HZ)) % 100);
}
/*
@@ -1269,6 +1293,10 @@
console_loglevel = 10;
continue;
}
+ if (!strcmp(line,"quiet")) {
+ console_loglevel = 4;
+ continue;
+ }
if (!strncmp(line,"init=",5)) {
line += 5;
execute_command = line;
@@ -1457,6 +1485,21 @@
struct task_struct *child_reaper = &init_task;
+
+static void __init do_initcalls(void)
+{
+ initcall_t *call;
+
+ call = &__initcall_start;
+
+ while (call < &__initcall_end)
+ {
+ (*call)();
+ call++;
+ }
+}
+
+
/*
* Ok, the machine is now initialized. None of the devices
* have been touched yet, but the CPU subsystem is up and
@@ -1497,6 +1540,10 @@
* Ok, at this point all CPU's should be initialized, so
* we can start looking into devices..
*/
+#ifdef CONFIG_ARCH_S390
+ s390_init_machine_check();
+#endif
+
#ifdef CONFIG_PCI
pci_init();
#endif
@@ -1521,6 +1568,9 @@
#ifdef CONFIG_MAC
nubus_init();
#endif
+#ifdef CONFIG_AGP
+ agp_init();
+#endif
/* Networking initialization needs a process context */
sock_init();
@@ -1555,11 +1605,19 @@
/* .. executable formats .. */
binfmt_setup();
+ /* the functions marked initcall */
+
+ do_initcalls();
+
/* .. filesystems .. */
filesystem_setup();
#ifdef CONFIG_IRDA
irda_device_init(); /* Must be done after protocol initialization */
+#endif
+
+#ifdef CONFIG_MICROCODE
+ microcode_init();
#endif
/* Mount the root filesystem.. */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)