[parisc-linux] sym53c8xx driver with 64-bit kernel on C200.
Matthew Wilcox
matthew@wil.cx
Sun, 4 Mar 2001 04:18:33 +0000
On Sat, Mar 03, 2001 at 08:45:03PM -0700, Ryan Bradetich wrote:
> When I run OUTL(nc_dsp,pc) through the preprocessor the statement gets
> expanded into this:
>
> _gsc_writel(((__builtin_constant_p((__u32)((((pc))))) ? ({ __u32 __x =
> (((((pc))))); ((__u32)( (((__u32)(__x) & (__u32)0x000000ffUL) << 24) |
> (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(__x) &
> (__u32)0x00ff0000UL) >> 8) | (((__u32)(__x) & (__u32)0xff000000UL) >>
> 24) )); }) : __fswab32(((((pc))))))),(void *)((char *)np->reg +
> (((size_t) &((struct ncr_reg *)0)->nc_dsp))));
I guess you'd like this decoded? Let's see. `pc' is clearly not a constant,
so __builtin_constant_p returns false, so we can simplify this down to:
_gsc_writel(__fswab32(pc) ,
(void *)((char *)np->reg + (((size_t) &((struct ncr_reg *)0)->nc_dsp))));
which leads me to ask `what value does `pc' have?'
I suspect you want to put debugging code in _gsc_writel to tell you where
you're trying to perform IO to.
My suspicion is that you're writing to the 32 bit IO space in 64-bit mode,
which is juts not going to work.
--
Revolutions do not require corporate support.