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