Re: 2G memory split

From: Sergey Vlasov
Date: Tue Jan 10 2006 - 12:06:50 EST


On Tue, 10 Jan 2006 15:39:31 +0100 Jens Axboe wrote:

> --- a/include/asm-i386/page.h
> +++ b/include/asm-i386/page.h
> @@ -109,11 +109,23 @@ extern int page_is_ram(unsigned long pag
>
> #endif /* __ASSEMBLY__ */
>
> +#if defined(CONFIG_DEFAULT_3G)
> +#define __PAGE_OFFSET_RAW (0xC0000000)
> +#elif defined(CONFIG_DEFAULT_3G_OPT)
> +#define __PAGE_OFFSET_RAW (0xB0000000)
> +#elif defined(CONFIG_DEFAULT_2G)
> +#define __PAGE_OFFSET_RAW (0x78000000)
> +#elif defined(CONFIG_DEFAULT_1G)
> +#define __PAGE_OFFSET_RAW (0x40000000)
> +#else
> +#error "Bad user/kernel offset"
> +#endif
> +
> #ifdef __ASSEMBLY__
> -#define __PAGE_OFFSET (0xC0000000)
> +#define __PAGE_OFFSET __PAGE_OFFSET_RAW
> #define __PHYSICAL_START CONFIG_PHYSICAL_START
> #else
> -#define __PAGE_OFFSET (0xC0000000UL)
> +#define __PAGE_OFFSET ((unsigned long)__PAGE_OFFSET_RAW)
> #define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START)
> #endif
> #define __KERNEL_START (__PAGE_OFFSET + __PHYSICAL_START)

Changing PAGE_OFFSET this way would break at least Valgrind (the latest
release 3.1.0 by default is statically linked at address 0xb0000000, and
PIE support does not seem to be present in that release). I remember
that similar changes were also breaking Lisp implementations (cmucl,
sbcl), however, I am not really sure about this.

Attachment: pgp00000.pgp
Description: PGP signature