still no accelerated X ($#!$*)

Moritz Thomas motho at gmx.net
Wed Jan 19 21:38:57 EST 2000


Finally I got it!

The problem was in the Xpmac code. If I remember correctly, this error
was some time ago in the kernel's "atyfb.c" as well. Probably this is also
fixed in current release of Xpmac

The following functions in "regmach.h":
#if defined (__powerpc__)
extern pointer mach64MemReg;

static inline void regw(volatile unsigned long regindex, unsigned long regdata)
{
  register unsigned long base_addr = (unsigned long)mach64MemReg;

  asm("stwbrx %0,%1,%2": : "r"(regdata), "r"(regindex), "r"(base_addr));
}

static inline unsigned long regr(volatile unsigned long regindex)
{
  register unsigned long base_addr = (unsigned long)mach64MemReg, val;

  asm("lwbrx %0,%1,%2": "=r"(val):"r"(regindex), "r"(base_addr));
  return(val);
}
#endif

need to be replaced by:
#if defined (__powerpc__)
extern pointer mach64MemReg;

static inline void regw(volatile unsigned long regindex, unsigned long regdata)
{
  register unsigned long base_addr = (unsigned long)mach64MemReg;

  asm("stwbrx %0,%1,%2": : "r"(regdata), "b"(regindex), "r"(base_addr));
}

static inline unsigned long regr(volatile unsigned long regindex)
{
  register unsigned long base_addr = (unsigned long)mach64MemReg, val;

  asm("lwbrx %0,%1,%2": "=r"(val):"b"(regindex), "r"(base_addr));
  return(val);
}
#endif

Don't know if this is correct (no clue about ppc assembly), but it works...

mo


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list