Takashi Iwai wrote: > 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. >
I strongly believe readl() and writel() on x86_64 does 32 bit reads/writes. (checked linux-2.6.12-rc5). Therefore reads/writes are of correct size with that patch - should be something different. -- Kind regards, Igor V. Kovalenko _______________________________________________ Openvortex-dev mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/openvortex-dev
