lkml.org 
[lkml]   [2013]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: coccinelle and bitmask arithmetic


    On Wed, 30 Jan 2013, Russell King - ARM Linux wrote:

    > On Wed, Jan 30, 2013 at 09:21:28AM +0100, walter harms wrote:
    > > Great hit Joe :)
    > >
    > > Sometimes i am really surprised what code can be found
    > > in the kernal and it is still working.
    > > Having no clue of the code i suspect somebody tries to
    > > check is mask outside the range it should read
    > > PHYS_OFFSET |( SZ_64M - 1)
    > > maybe someone should tell them that
    > > 1+1=10 while 1|1=1
    > > It does not seem to matter here (or ... ?)
    >
    > This PCI host is only used on one platform (ARMCORE).
    >
    > For this, PHYS_OFFSET will be a value with only the top few bits of a
    > 32-bit word set (such as 0xc0000000) - it's certainly not going to have
    > any bits set below bit 26 on the platform this driver gets used on.
    > "SZ_64M - 1" is the size of the window that RAM appears.
    >
    > So, _either_ logical OR or addition works.
    >
    > If we _did_ end up with a PHYS_OFFSET with bits less than bit 26 set
    > here, we'd have bigger problems - because the base of RAM in PCI space
    > will not correspond with PHYS_OFFSET and all the DMA mapping stuff breaks.

    The "problem" is that the computation is done inconsistently within the
    same file. Sometimes with + and sometimes with |.

    julia


    \
     
     \ /
      Last update: 2013-01-30 13:01    [W:3.207 / U:1.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site