4 /* ECC atomic, DMA, SMP and interrupt safe scrub function */
6 static __inline__
void atomic_scrub(void *va
, u32 size
)
8 unsigned long *virt_addr
= va
;
11 for (i
= 0; i
< size
/ 4; i
++, virt_addr
++)
12 /* Very carefully read and write to memory atomically
13 * so we are interrupt, DMA and SMP safe.
15 __asm__
__volatile__("lock; addl $0, %0"::"m"(*virt_addr
));