Messages in this thread | | | Date | Sat, 28 Feb 2009 08:15:34 +0100 | From | Ingo Molnar <> | Subject | Re: J |
| |
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> Yinghai Lu wrote: >> On Fri, Feb 27, 2009 at 5:51 PM, Jeremy Fitzhardinge <jeremy@goop.org> wrote: >> >>> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> >>> >>> Rather than having special purpose init_pg_table_start/end variables >>> to delimit the kernel pagetable built by head_32.S, just use the brk >>> mechanism to extend the bss for the new pagetable. >>> >>> This patch removes init_pg_table_start/end and pg0, defines __brk_base >>> (which is page-aligned and immediately follows _end), initializes >>> the brk region to start there, and uses it for the 32-bit pagetable. >>> >> ... >> >> >>> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c >>> index c246dc4..ed02176 100644 >>> --- a/arch/x86/kernel/setup.c >>> +++ b/arch/x86/kernel/setup.c >>> @@ -113,8 +113,10 @@ >>> #endif >>> >>> unsigned int boot_cpu_id __read_mostly; >>> -__initdata unsigned long _brk_start = (unsigned long)&_end; >>> -__initdata unsigned long _brk_end = (unsigned long)&_end; >>> + >>> +extern char __brk_base[]; >>> +__initdata unsigned long _brk_start = (unsigned long)__brk_base; >>> +__initdata unsigned long _brk_end = (unsigned long)&__brk_base; >>> >> >> ? >> > > What are you asking? __brk_base is _end rounded up to a page > boundary, so head_32.S can use it directly for pagetable > allocation. Are you flagging the '&' typo? Something else?
it's not really a typo either (__brk_base and &__brk_base should be the same) - just a bit weird looking.
Ingo
| |