openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openvortex-dev] Re: [Alsa-devel] Re: [ALSA - driver 0001138]: error


From: Igor Kovalenko
Subject: Re: [Openvortex-dev] Re: [Alsa-devel] Re: [ALSA - driver 0001138]: errors when installing au8820 modules
Date: Tue, 07 Jun 2005 21:05:12 +0400
User-agent: Mail/News Client 1.0+ (X11/20050324)

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]