At Tue, 7 Jun 2005 17:16:02 +0200,
Alien wrote:
> 
> [1  <text/plain; iso-8859-1 (quoted-printable)>]
> Op dinsdag 7 juni 2005 17:05, schreef Raymond:
> > The patch (diff11.diff) cause segmenation fault on my 32bit machine
> > during /etc/init.d/alsasound start
> >
> > http://savannah.nongnu.org/patch/?func=detailitem&item_id=3948
> >
> > Do anyone know why readl() and writel() behave different in i386
> > (32bits) and AMD64 (64bits) ?
> >
> > http://sourceforge.net/mailarchive/message.php?msg_id=10773530
> >
> >
> > #ifndef CONFIG_X86_64
> >
> > #define        hwread(x,y) readl((x)+((y)>>2))
> > #define        hwwrite(x,y,z) writel((z),(x)+((y)>>2))
> >
> > #else
> >
> > #define        hwread(x,y) readl((x)+(y))
> > #define        hwwrite(x,y,z) writel((z),(x)+(y))
> >
> > #endif
> 
> that doesn't look good, unless the mmio is void* in 32bit and unsigned long* 
> in x86_64...
> 
> 'unsigned long* mmio' should be preferred and together with '#define        
> hwread(x,y) readl((x)+(y))' , this works for both platforms

I guess using "unsigned long" for both architectures is broken, too.
Should be "u32" to be arch-independent.


Takashi


_______________________________________________
Openvortex-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/openvortex-dev

Reply via email to