Messages in this thread | | | Date | Tue, 4 Mar 2008 07:58:53 +0100 | From | Ingo Molnar <> | Subject | Re: bisected boot regression post 2.6.25-rc3.. please revert |
| |
* Segher Boessenkool <segher@kernel.crashing.org> wrote:
> so (on 32-bit) ~_PAGE_PSE is ~0x80L is 0xffffff7f, which when cast to > 64-bit is 0x00000000ffffff7f, so in > > (~PAGE_MASK & ~_PAGE_USER & ~_PAGE_PSE & ~_PAGE_NX) > > all the high bits are lost, while the original > > ~(PAGE_MASK | _PAGE_USER | _PAGE_PSE | _PAGE_NX) > > works as intended, since the bit inversion is done on a 64-bit number.
but we really are interested in the low bits here (lets ignore the NX bit for now) and the patch has been in the queue for a long time (more than a month), so if there was a trivial mask mixup problem it would have shown on the first day. So i suspect some gcc bug instead - and certainly the colorful mixture of types and signs in this expression might have surprised a new version of gcc somewhere.
Ingo
| |