Re: Accessing flash directly from User Space [SOLVED]
From: Joakim Tjernlund <hidden>
Date: 2009-10-31 20:17:14
Michael Buesch [off-list ref] wrote on 31/10/2009 17:42:54:
On Saturday 31 October 2009 14:26:48 Joakim Tjernlund wrote:quoted
quoted
quoted
On Friday 30 October 2009 16:08:55 Alessandro Rubini wrote:quoted
quoted
asm("eieio; sync");Hmm... : : : "memory" And, doesn't ";" start a comment in assembly? (no, not on powerpcit seems) Yes, I think the barrier is wrong. Please try with #define mb() __asm__ __volatile__("eieio\n sync\n" : : : "memory")That definition worked great. I must have missed the : : : "memory" bit when I was digging through code. Thanks, that gives me about a 2x speedup over the msync() calls.Exactly when should you use the barrier? At every access, every read or when changing from write to read?Well, it depends on the device you are accessing. I'll give you a small pseudo example. mmio[0] = address; mmio[1] = data; mb(); mmio[3] |= 0x01; /* This triggers an operation -> address=data */ /* probably also need an mb() here, if the following code * depends on the operation to be triggered. */
So anything that depends on the previous accesses needs a mb() hmm, the mmio[0] and mmio[1] are written in order I hope? Jocke