On 2002.04.24 12:41 Michel Dänzer wrote:
> On Wed, 2002-04-24 at 10:52, José Fonseca wrote:
> > On 2002.04.24 09:34 Michel Dänzer wrote:
> > > ...
> > >
> > > Anyway, MACH64_{READ,WRITE} will likely have to be changed to use
> > > {in,out}_le32 (in mach64_drv.h) for it to work on PPC.
> > >
> >
> > As Peter managed to get everything to compile, yesterday I was looking
> > into this but when looking at r128_drv.h but it only used the
> > le32_to_cpu/cpu_to_le32 macros for Alpha.
> 
> Look again. :)
> 

Oops! I saw exactly the other way around. :o)

> While r128 currently has only cpu_to_le32 and le32_to_cpu, I think
> {in,out}_le32 would be better because they are designed for MMIO and
> preserve the order of memory/bus access. In fact, I propose to use them
> for MMIO in all drivers on all architectures.
> 

So your suggestion (taking R128 code as an example) would be to change 
this:

   #define R128_READ(reg)               le32_to_cpu( R128_DEREF( reg ) )
   #define R128_WRITE(reg,val)                                          \
   do {                                                                 \
        R128_DEREF( reg ) = cpu_to_le32( val );                         \
   } while (0)

to this instead:

   #define R128_READ(reg)               in_le32( R128_ADDR( reg ) )
   #define R128_WRITE(reg,val)                                          \
   do {                                                                 \
        out_le32( R128_ADDR( reg ), val );                              \
   } while (0)

if I understood properly the {in,out}_le32 usage.

> > I guesses that for MMIO  operation this wouldn't be necessary in
> PowerPC
> > after all, as is the case of Mach64. Is this so? If so in which
> > situations is it necessary to account for endian machines?
> 
> PCI is little endian so normally all access to a PCI device is little
> endian. While most current graphics chip offer big endian apertures for
> the framebuffer and registers, it's usually better and cleaner to use
> the little endian aperture for the latter, in particular if not all
> registers are 32 bit wide. At least PPC can load and store in little
> endian so performance is not an issue.
> 

Ok. Thanks for the enlightenment.

> -- Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) 
> developer
> XFree86 and DRI project member   /  CS student, Free Software enthusiast

José Fonseca

_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to