Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@linux-mips.org>
To: Daniel Jacobowitz <drow@false.org>
Cc: Ulrich Weigand <uweigand@de.ibm.com>, gdb-patches@sourceware.org
Subject: Re: [rfc][4/13] Eliminate read_register: read_register in  deprecated_mips_set_processor_regs_hack
Date: Tue, 12 Jun 2007 14:50:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.64N.0706121524540.23162@blysk.ds.pg.gda.pl> (raw)
In-Reply-To: <20070612142003.GG7815@caradoc.them.org>

On Tue, 12 Jun 2007, Daniel Jacobowitz wrote:

> >  Well, if the latter provides similar means.  I have extensive changes 
> > pending for deprecated_mips_set_processor_regs_hack() and this access 
> > definitely has to stay.
> 
> In the new GDB scheme for such things, a processor with different
> register names should be a different gdbarch.  The XML descriptions
> are just one way of specifying a new architecture variant and which
> variant to use - there are other ways, too.  I would recommend a look
> at remote_read_description, which provides another way that is closer
> to what you need here.

 I will.

> It's not a perfect fit, though.  What
> deprecated_mips_set_processor_regs_hack could be doing is waiting
> until the point where we know the architecture well enough to find the
> PRID register contents, and then selecting a variant of the
> architecture based on that PRID value.  But we do not know the
> register layout yet at the point of target_read_description; we don't
> know which registers are provided or how big they are.

 Worse yet -- the approach that we have taken is generic.  We can handle 
arbitrary MIPS32/MIPS64 processors as conforming to the current revisions 
of the base architecture specs and the application-specific extensions 
(ASEs) by decoding feature bits defined in cp0 config registers -- there 
four config registers defined so far; additional registers may need to be 
read for variable length register subsets (e.g. watch and performance 
counter registers).

 These in turn may differ between members of the same processor family 
based on configuration of a given system which might be hardwired and/or 
configured from the bootstrap bits.  Further changes may be obtained by 
fiddling with some processor-specific configuration bits, for example in 
some implementations the MMU may be switched between the TLB and the fixed 
mode and this affects some cp0 registers.

 There are only two or three variations that care of specific processor 
IDs from PRId -- all the rest is generic using PRId to determine whether a 
chip is a MIPS architecture or a legacy implementation only.  Using PRId 
as a selector here would be a maintenance nightmare -- there are too many 
of them.

> I don't have an easy answer for this.  Simplest would be to keep it
> local to remote-mips.c (as it currently is), but change how it works;
> move it from common_open to a new remote_mips_read_description, fetch
> the PRID without going through GDB's register cache at all, and then
> create an appropriate target description which specifies the processor
> based on the PRID.  It would be nicer if we could make it work for
> remote.c too though.

 Well, it's actually in mips-tdep.c, so it should work for any MIPS 
target.

> Of course you can also make any remote MIPS targets respond with XML
> <architecture> tags :-)

 I guess this is unfeasible -- there are too many possibilites which are 
neither fixed nor easy to predict as you can see from the above.  Unless 
the XML tags provide means for subsetting the architecture.  Please note 
that to make the matter more exciting the subsets do overlap.

 I shall see how the change fits into gdb in its current state and submit 
the proposal as soon as feasible.

  Maciej


  reply	other threads:[~2007-06-12 14:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-07 20:58 Ulrich Weigand
2007-06-08 12:28 ` Maciej W. Rozycki
2007-06-12 14:19   ` Daniel Jacobowitz
2007-06-12 14:50     ` Maciej W. Rozycki [this message]
2007-06-12 15:05       ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.64N.0706121524540.23162@blysk.ds.pg.gda.pl \
    --to=macro@linux-mips.org \
    --cc=drow@false.org \
    --cc=gdb-patches@sourceware.org \
    --cc=uweigand@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox