[U-Boot-Users] [PATCH 08/13] SPARC: added SMC91111 driver in and out macros for LEON processors.

Daniel Hellstrom daniel at gaisler.com
Mon Mar 31 16:40:47 CEST 2008


Ben Warren wrote:

> Daniel Hellstrom wrote:
>
>> Ben Warren wrote:
>>  
>>
>>> I haven't looked at how all the funky macros in this patch are 
>>> called, but it's generally considered good form to wrap multi-line 
>>> macros with do {...} while(0) in order to avoid compiler issues. 
>>> I'll NAK the patch for now based on this.
>>>     
>>
>>
>> The Macros are used to read/write 8-,16-,32-bit words from the I/O 
>> bus where the SMC MAC is. LEON2/3 is bigendian, so the macros swaps 
>> the read and written data as well. The I/O bus is
>> non-cacheable so no force cache miss is needed here.
>>
>> I have made the do{}while(0) you asked for and updated patch 8 and my 
>> repository:
>>
>>
>>   
>
> Per the e-mail by A. Rubini, I guess this isn't necessary.  Sorry for 
> causing extra work for you.  I'll pull this into the net tree today.
>
> regards,
> Ben

I agree with you both. However, some of the macros should not be 
"expression statements" as they return nothing this is also indicated by 
the inline function declared in drivers/net/smc91111.c:
static inline word SMC_inw(dword offset);
static inline void SMC_outw(word value, dword offset);
static inline byte SMC_inb(dword offset);
static inline void SMC_outb(byte value, dword offset);
static inline void SMC_insw(dword offset, volatile uchar* buf, dword len);
static inline void SMC_outsw(dword offset, uchar* buf, dword len);

I my last patch I let the only the "true" "expressions statements" have 
the gcc slang Alessandro speak of.

I would prefer the last patch I sent, currently in the repository.

Best Regards,
Daniel Hellstrom





More information about the U-Boot mailing list