Subject: Re: build problem
To: None <p99dreyf@criens.u-psud.fr, tech-kern@netbsd.org>
From: None <eeh@netbsd.org>
List: tech-kern
Date: 06/02/2001 15:47:34
It works fine at mine (macppc), but I was told that build fails on
alpha. The person that reported it was able to build by replacing
(caddr_t)SCARG(&pta, data)
by
(caddr_t)(u_long)SCARG(&pta, data)
I don't understand why it fails
The reason this won't compile on alpha or any other 64-bit platform
is that 64-bit machines use 64-bit pointers. The code you have
there is extending a 32-bit value to 64-bits and using that as a
pointer. Since the most significant 32-bits are zero, attempts to
use that pointer are likely to point to to the incorrect address and
thus fail. The only correct solution for 64-bit platforms is to pass
in a 64-bit pointer.
Eduardo