On 12/27/2011 17:34, Stephen Hemminger wrote:
On Tue, 27 Dec 2011 16:29:57 -0500
Joshua Kinard [off-list ref] wrote:
quoted
MIPS I/O registers are always memory-mapped, and to prevent the compiler
from trying to over-optimize, volatile is used to make sure we always read a
value from the hardware and not from some cached value.
Almost every other network driver had memory mapped register.
The problem is volatile is that the compiler is stupid and wrong.
Using explicit barriers is preferred and ensures correct and fast
code.
I am somewhat new to driver development, so I do not know all the tricks of
the trade just yet. Do you have references to doing explicit barriers that
I can look at? Might be worth trying on the RTC driver I have to get the
hang of them.
--
Joshua Kinard
Gentoo/MIPS
kumba@gentoo.org
4096R/D25D95E3 2011-03-28
"The past tempts us, the present confuses us, the future frightens us. And
our lives slip away, moment by moment, lost in that vast, terrible in-between."
--Emperor Turhan, Centauri Republic