[U-Boot-Users] cfi_flash.c and lost volatile qualifier

Adrian Filipi adrian.filipi at eurotech.com
Tue Apr 29 23:10:40 CEST 2008


 	Sure, reducing the reliance on volatile is a good idea, but I'm at 
a loss for anything better to do.

 	I'm seeing a real problem that is only fixed by qualifying the 
container of the pointer as volatile, i.e. "void *volatile".  "volatile 
void *" has no effect as expected given that the read/write accessors are 
used now.

 	The old data type was essentially "volatile void *volatile addr" 
and the new type is simply "void *addr".  I seem to need at least "void 
*volatile addr" for things to work.

 	Note, I'm only seeing this problem on our PXA250 boards.

 	Adrian
--
Linux Software Engineer | EuroTech, Inc. | www.eurotech-inc.com

On Tue, 29 Apr 2008, Wolfgang Denk wrote:

> In message <alpine.DEB.1.10.0804291604250.32753 at pmy.adscville> you wrote:
>>
>>  	I narrowed down the source of the problem to the loss of the
>> volatile qualifier on the addr pointer in flash_write_cmd().  Adding the
>> qualifier gets rid of the corruption.  In the older 1.2.0 sources, addr was
>> declared as "volatile cfiptr_t addr;".
>
> The volatile should not be needed - the CFI driver should use correct
> accessor macros instead. See
> Documentation/volatile-considered-harmful.txt in your Linux kernel
> source tree...
>
> Best regards,
>
> Wolfgang Denk
>
>




More information about the U-Boot mailing list