Print

Print


http://dev.starlink.ac.uk/bugzilla/show_bug.cgi?id=42





------- Additional Comments From [log in to unmask]  2005-06-06 17:08 -------
Hi Tim,

what you need to do is wrap your %VAL calls like this:

  call acc_vignet( xaxis,yaxis,nx,ny,%val(cnf_pval(imgptr))

you get the CNF_PVAL declaration from:

  include 'CNF_PAR'

This performs the magic of expanding the value stored in imgptr
(which can only be 32bits wide) into the proper address. It's not
needed on 32 bit platforms as imgptr is the address.

That should be all that's needed, unless you're playing complicated
games with memory addresses, like determining your own offsets.

Mark's document describes how we intended to move completely to 64 bits, 
including accessing memory well in excess of 2Gb, but we've never
actually implemented any of it (beyond CNF_PVAL address handling), so
use it with caution. The only other official explanation of how to 
handle address width problems is in SUN/209 (CNF), but that's probably
a little fullsome for most people.

Re: Alphas. When we moved to Alphas all the C-code was tidied up for 
64 bit access, but we used a trick for squeezing a memory address into
a Fortran INTEGER with some special linker flags that limited the
process address space to 32 bits (look at the output of hds_link on an
Alpha). That was all pre-CNF_PVAL. In principle we shouldn't need those
special flags now (FIGARO aside), but I don't think we've tested that.

Cheers,

Peter.



------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.