diff -urN 2.2.15pre17/arch/alpha/vmlinux.lds bss/arch/alpha/vmlinux.lds --- 2.2.15pre17/arch/alpha/vmlinux.lds Mon Jan 17 16:44:33 2000 +++ bss/arch/alpha/vmlinux.lds Fri Apr 7 02:14:59 2000 @@ -39,9 +39,11 @@ .got : { *(.got) } .sdata : { *(.sdata) } _edata = .; - _bss = .; + + __bss_start = .; .sbss : { *(.sbss) *(.scommon) } .bss : { *(.bss) *(COMMON) } + __bss_stop = .; _end = .; .mdebug 0 : { *(.mdebug) } diff -urN 2.2.15pre17/arch/i386/vmlinux.lds.S bss/arch/i386/vmlinux.lds.S --- 2.2.15pre17/arch/i386/vmlinux.lds.S Mon Jan 17 16:44:33 2000 +++ bss/arch/i386/vmlinux.lds.S Fri Apr 7 02:14:59 2000 @@ -56,6 +56,7 @@ .bss : { *(.bss) } + __bss_stop = .; _end = . ; /* Stabs debugging sections. */ diff -urN 2.2.15pre17/arch/ppc/vmlinux.lds bss/arch/ppc/vmlinux.lds --- 2.2.15pre17/arch/ppc/vmlinux.lds Mon Jan 17 16:44:35 2000 +++ bss/arch/ppc/vmlinux.lds Fri Apr 7 02:14:59 2000 @@ -103,6 +103,7 @@ *(.bss) *(COMMON) } + __bss_stop = .; _end = . ; PROVIDE (end = .); } diff -urN 2.2.15pre17/arch/sparc/vmlinux.lds bss/arch/sparc/vmlinux.lds --- 2.2.15pre17/arch/sparc/vmlinux.lds Mon Jan 17 16:44:36 2000 +++ bss/arch/sparc/vmlinux.lds Fri Apr 7 02:14:59 2000 @@ -50,6 +50,7 @@ *(.bss) *(COMMON) } + __bss_stop = .; _end = . ; PROVIDE (end = .); /* Stabs debugging sections. */ diff -urN 2.2.15pre17/arch/sparc64/vmlinux.lds bss/arch/sparc64/vmlinux.lds --- 2.2.15pre17/arch/sparc64/vmlinux.lds Mon Jan 17 16:44:36 2000 +++ bss/arch/sparc64/vmlinux.lds Fri Apr 7 02:14:59 2000 @@ -49,6 +49,7 @@ *(.bss) *(COMMON) } + __bss_stop = .; _end = . ; PROVIDE (end = .); /* Stabs debugging sections. */ diff -urN 2.2.15pre17/init/main.c bss/init/main.c --- 2.2.15pre17/init/main.c Sun Apr 2 21:08:10 2000 +++ bss/init/main.c Fri Apr 7 02:14:59 2000 @@ -1252,6 +1252,13 @@ extern void initialize_secondary(void); +static void __init clear_bss(void) +{ + extern char * __bss_start, __bss_stop; + memset(__bss_start, 0, + (unsigned long) __bss_stop - (unsigned long) __bss_start); +} + /* * Activate the first processor. */ @@ -1259,9 +1266,13 @@ asmlinkage void __init start_kernel(void) { char * command_line; - #ifdef __SMP__ static int boot_cpu = 1; +#endif + + clear_bss(); + +#ifdef __SMP__ /* "current" has been set up, we need to load it now */ if (!boot_cpu) initialize_secondary();