Re: Should io(read|write)(8|16|32)_rep take (const|) volatile u(8|16|32)__iomem *addr?

From: Jeff Garzik
Date: Fri Feb 02 2007 - 16:40:33 EST


Michael K. Edwards wrote:
Doubtless this is on purpose, but it's not clear to me why that should
be true for these particular functions/macros. I shouldn't have to
cast away the volatile on a pointer to hardware registers in order to
pass it into writel(), should I? And it shouldn't be forbidden for
the caller to declare the pointer volatile so that the compiler
catches attempts to pass it into non-volatile interfaces, should it?


Therein lies your bug: you should not be annotating your __iomem pointers with volatile.

That's why volatile is found in the implementation and not the prototypes of the accessor functions.

Jeff


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/