
Daniel Hellstrom wrote:
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.
Very good. Thanks for being so thorough! Much more interesting than quibbling about whitespace...
regards, Ben