> On Tue, Jan 15, 2008 at 11:29:37AM +0100, rubisher wrote: > > Hello Dave, > > > > Compiling p-l with gcc-4.2 I see new warning "discards qualifiers from pointer > > target type": > > Joel, this is a standard C question ... this list really isn't for > teaching people how to program. > mmm, it's not because you don't know how to translate your programming idea in C that you don't know how to program, though ;-) > > /SRCTREE/drivers/net/lib82596.c:388: warning: passing argument 2 of > > 'dma_cache_sync' discards qualifiers from pointer target type > > You're passing a volatile pointer to a function which is expecting a > non-volatile pointer. That's potentially dangerous, so gcc warns about > it. > > The normal way to fix this would be to add a volatile attribute to the > argument in question: > > dma_cache_sync(struct device *dev, volatile void *vaddr, size_t size, > enum dma_data_direction direction) > So may be this ccio-dma.c structure: struct ioa_registers { /* Runway Supervisory Set */ int32_t unused1[12]; u32 io_command; /* Offset 12 */ u32 io_status; /* Offset 13 */ u32 io_control; /* Offset 14 */ int32_t unused2[1]; /* Runway Auxiliary Register Set */ u32 io_err_resp; /* Offset 0 */ u32 io_err_info; /* Offset 1 */ u32 io_err_req; /* Offset 2 */ u32 io_err_resp_hi; /* Offset 3 */ u32 io_tlb_entry_m; /* Offset 4 */ u32 io_tlb_entry_l; /* Offset 5 */ u32 unused3[1]; u32 io_pdir_base; /* Offset 7 */ u32 io_io_low_hv; /* Offset 8 */ u32 io_io_high_hv; /* Offset 9 */ u32 unused4[1]; u32 io_chain_id_mask;/* Offset 11 */ u32 unused5[2]; u32 io_io_low; /* Offset 14 */ u32 io_io_high; /* Offset 15 */ }; a member of: struct ioc { struct ioa_registers __iomem *ioc_regs; /* I/O MMU base address */ u8 *res_map; /* resource map, bit == pdir entry */ [snip] }; "struct ioa_registers" I guess according to its name represent the layout of internal ioa registers and should be 'qualified' as volatile to prevent gcc to reorganize it? e.g. typedef volatile struct ioa_registers v_ioa_regs_t; and struct ioc { v_ioa_regs_t __iomem *ioc_regs; /* I/O MMU base address */ [snip] }; Tx, r. --- Scarlet One, ADSL 6 Mbps + Telephone, from EUR 29,95... http://www.scarlet.be/ - To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html