pte_update and 64-bit PTEs on PPC32?
Kumar Gala
kumar.gala at freescale.com
Thu Apr 7 07:33:14 EST 2005
Here is a version that works if CONFIG_PTE_64BIT is defined. If we
like this, I can simplify the pte_update so we dont need the (unsigned
long)(p+1) - 4) trick anymore. Let me know.
- kumar
#ifdef CONFIG_PTE_64BIT
static inline unsigned long long pte_update(pte_t *p, unsigned long clr,
unsigned long set)
{
unsigned long long old;
unsigned long tmp;
__asm__ __volatile__("\
1: lwarx %L0,0,%4\n\
lwzx %0,0,%3\n\
andc %1,%L0,%5\n\
or %1,%1,%6\n\
stwcx. %1,0,%4\n\
bne- 1b"
: "=&r" (old), "=&r" (tmp), "=m" (*p)
: "r" (p), "r" ((unsigned long)(p) + 4), "r" (clr), "r" (set),
"m" (*p)
: "cc" );
return old;
}
#else
... code that exists today ...
#endif
More information about the Linuxppc-embedded
mailing list