[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A4E5C66.1090206@goop.org>
Date: Fri, 03 Jul 2009 12:30:46 -0700
From: Jeremy Fitzhardinge <jeremy@...p.org>
To: lkml@...eThan.org
CC: Andi Kleen <andi@...stfloor.org>, linux-kernel@...r.kernel.org
Subject: Re: [Bug Fix]: Do 32-bit table calculations in pre-processor
On 07/03/09 12:13, Michael S. Zick wrote:
> On Fri July 3 2009, Jeremy Fitzhardinge wrote:
>
>> On 07/03/09 11:38, Michael S. Zick wrote:
>>
>>> I make no claims for it at the moment - too early in the test process.
>>> Just the general observation that it takes 0.5M to describe 0.5G of ram.
>>>
>>>
>> Only if you're using 4k pages. With large pages, 1 pte can map 2M, so
>> 256 entries can map 512M, so you only need 1/2 a page of pagetable
>> (assuming PAE; if not a single entry can map 4M).
>>
>>
>
> Ah, but you can't assume that - look at your VIA-C7M tech sheet - NO PAE.
>
According to
http://www.via.com.tw/en/products/processors/c7-m/secure_by_design.jsp,
it supports NX, which means it must support PAE.
But even without PAE, it can still support PSE (large pages).
> Try ending the filename in ".S" and passing it to gcc,
> like the build system does.
>
It doesn't make any difference. After going through cpp the expression is:
# 62 "/home/jeremy/git/linux/arch/x86/kernel/head_32.S"
MAPPING_BEYOND_END = (((((1<<32) - 0xC0000000) >> 12) / 512) + 4) << 12
which will be evaluated by the assembler. The C preprocessor doesn't
evaluate expressions in the source; it only ever does substitutions and
leaves the results for the compiler/assembler to evaluate. (It evals
expressions on cpp # lines, of course, but that's not relevant here.)
J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists