Messages in this thread | | | Date | Sat, 23 Feb 2008 10:18:17 +0100 | From | Sam Ravnborg <> | Subject | Re: [Q] x86 - boot/header.S |
| |
On Sat, Feb 23, 2008 at 12:07:39PM +0300, Cyrill Gorcunov wrote: > [Yinghai Lu - Sat, Feb 23, 2008 at 12:44:49AM -0800] > | On Sat, Feb 23, 2008 at 12:20 AM, Cyrill Gorcunov <gorcunov@gmail.com> wrote: > | > Hi Peter, Sam, > | > > | > could you take a look on x86/boot/header.S:280 please? > | > > | > # Zero the bss > | > movw $__bss_start, %di > | > movw $_end+3, %cx > | > xorl %eax, %eax > | > subw %di, %cx > | > shrw $2, %cx > | > rep; stosl > | > > | > I wonder why is $_end there instead of $__bss_stop? > | > Well, accroding to vmlinux_32.lsd both _end and __bss_stop > | > are the same BUT __bss_stop is more convenient methink. > | > Would it be usefull to change? > | > | we should have head32.c like head64.c > | and x86_32_start_kernel. > | > | Eric's patch long time ago... > | > | YH > | > > Hi Yinghai, > > thanks for reply BUT that is not the point (or maybe I miss something). > > Look, we only have head64.c - there is no head32.c at all. Both > vmlinux_32/64.lds defines _end exactly the same as __bss_stop. So in > code which DO fillup bss section with zeros the prefered name is > __bss_stop. The only thing I'm trying to say that it would be clean > naming scheme and I think it would help for further review - instead > of searching all over x86 files to find _end definition __bss_stop > tell us WHAT we are zeroing from the code.
We should introduce head32.c and then we can use the exact same function as 64 bit does:
/* Don't add a printk in there. printk relies on the PDA which is not initialized yet. */ static void __init clear_bss(void) { memset(__bss_start, 0, (unsigned long) __bss_stop - (unsigned long) __bss_start); }
This answers your Q.
I already resubmitted Eric's original patch to introduce head32.c as I also liked the cleanup in two Makefiles.
Sam
| |