On Sat, Aug 22, 2009 at 8:17 AM, Wolfgang Denk<w...@denx.de> wrote: >> #define virt_to_bus(devno, v) pci_virt_to_mem(devno, (void *) (v)) > > Also, I have to admit that I really dislike such casts as they just > suppress compiler warnings which are usually valuable - I'd rather > see you fixing the original problem (i. e. the type > incompatibilities).
The cast is there because it doesn't matter if the passed-in pointer is volatile or not, but the compiler complains anyway. Although apparently, it complains even with the cast. I don't know what to do about that, other than to modify struct eth_device so that the 'send' function doesn't take a virtual pointer (which it probably shouldn't anyway). > I would not go so far to say it is ignoring it. Let's say this cast > is insufficient (or simply the wrong approach) to silence the compiler. Well, since I can't reproduce the problem, how can I know if I've fixed it? I just can't see what's wrong with the code. My only suggestion is to do this: u64 temp; temp = virt_to_bus(hw->pdev, packet); txp->buffer_addr = cpu_to_le64(temp); That should eliminate the inefficient macro expansion, but it won't fix the warning. -- Timur Tabi Linux kernel developer at Freescale _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot