This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PA specifies invalid T_ADAFLAGS


> PA has 8 space registers numbered 0 to 7.  Most instructions allow you
> to specify one of 1, 2 or 3, OR to select the space register to use based
> on the top two bits of the virtual address.  If the top two bits are 00,
> use sr4, 01, use sr5, 10 uses 6 and 11 uses 7.  HPUX takes advantage

The first model is only available under hpux using assembly language.
The standard code generated by gcc uses sr4 which causes the top two
bits of a virtual address to select one of sr4, sr5, sr6, or sr7,
respectively.

Your comments that the base register can end up in the wrong segment
still suggests a bug to me.  I can't imagine the linker working with
anything other than the standard runtime.  As I said, a fix was done
regarding which register becomes the base register.  There were
problems in the past with the index being selected as the base register
and that didn't work with the segmented architecture of the PA.

I agree with Matthew that "-mdisable-indexing" should not be used
under linux as it has a flat memory model.

There doesn't seem to be any documentation of why -mdisable-indexing
is needed and nothing in the changelogs.  If there is something
special about the memory model used by ada, it would be good to
have it documented.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]