Add notes on register cache.
This commit is contained in:
parent
63978407cb
commit
2a00c9ceff
|
@ -1,3 +1,7 @@
|
|||
Mon May 15 16:50:45 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
* TODO: Add notes on register cache.
|
||||
|
||||
Mon May 15 21:27:27 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* sh-tdep.c (sh_dsp_reg_names, sh3_dsp_reg_names): New arrays.
|
||||
|
|
155
gdb/TODO
155
gdb/TODO
|
@ -1,11 +1,11 @@
|
|||
If you find inaccuracies in this list, please send mail to
|
||||
bug-gdb@prep.ai.mit.edu. If you would like to work on any of these,
|
||||
you should consider sending mail to the same address, to find out
|
||||
whether anyone else is working on it.
|
||||
gdb-patches@sourceware.cygnus.com. If you would like to work on any
|
||||
of these, you should consider sending mail to the same address, to
|
||||
find out whether anyone else is working on it.
|
||||
|
||||
|
||||
Known problems in GDB 5.0
|
||||
=========================
|
||||
Known problems in GDB 5.0
|
||||
=========================
|
||||
|
||||
Below is a list of problems identified during the GDB 5.0 release
|
||||
cycle. People hope to have these problems fixed in a follow-on
|
||||
|
@ -193,10 +193,8 @@ Robert Lipe writes:
|
|||
|
||||
--
|
||||
|
||||
------------------------------------------------
|
||||
|
||||
Code cleanups
|
||||
=============
|
||||
Code cleanups
|
||||
=============
|
||||
|
||||
The following code cleanups are planned for the follow-on release to
|
||||
GDB 5.0.
|
||||
|
@ -314,8 +312,127 @@ options are valid. Need to probably disable warnings by default.
|
|||
|
||||
--
|
||||
|
||||
General Wish List
|
||||
=================
|
||||
General Wish List
|
||||
=================
|
||||
|
||||
--
|
||||
|
||||
Register Cache Cleanup (below from Andrew Cagney)
|
||||
|
||||
I would depict the current register architecture as something like:
|
||||
|
||||
High GDB --> Low GDB
|
||||
| |
|
||||
\|/ \|/
|
||||
--- REG NR -----
|
||||
|
|
||||
register + REGISTER_BYTE(reg_nr)
|
||||
|
|
||||
\|/
|
||||
-------------------------
|
||||
| extern register[] |
|
||||
-------------------------
|
||||
|
||||
where neither the high (valops.c et.al.) or low gdb (*-tdep.c) are
|
||||
really clear on what mechanisms they should be using to manipulate that
|
||||
buffer. Further, much code assumes, dangerously, that registers are
|
||||
contigious. Having got mips-tdep.c to support multiple ABIs, believe
|
||||
me, that is a bad assumption. Finally, that register cache layout is
|
||||
determined by the current remote/local target and _not_ the less
|
||||
specific target ISA. In fact, in many cases it is determined by the
|
||||
somewhat arbitrary layout of the [gG] packets!
|
||||
|
||||
|
||||
How I would like the register file to work is more like:
|
||||
|
||||
|
||||
High GDB
|
||||
|
|
||||
\|/
|
||||
pseudo reg-nr
|
||||
|
|
||||
map pseudo <->
|
||||
random cache
|
||||
bytes
|
||||
|
|
||||
\|/
|
||||
------------
|
||||
| register |
|
||||
| cache |
|
||||
------------
|
||||
/|\
|
||||
|
|
||||
map random cache
|
||||
bytes to target
|
||||
dependant i-face
|
||||
/|\
|
||||
|
|
||||
target dependant
|
||||
such as [gG] packet
|
||||
or ptrace buffer
|
||||
|
||||
The main objectives being:
|
||||
|
||||
o a clear separation between the low
|
||||
level target and the high level GDB
|
||||
|
||||
o a mechanism that solves the general
|
||||
problem of register aliases, overlaps
|
||||
etc instead of treating them as optional
|
||||
extras that can be wedged in as an after
|
||||
thought (that is a reasonable description
|
||||
of the current code).
|
||||
|
||||
Identify then solve the hard case and the
|
||||
rest just falls out. GDB solved the easy
|
||||
case and then tried to ignore the real
|
||||
world :-)
|
||||
|
||||
o a removal of the assumption that the
|
||||
mapping between the register cache
|
||||
and virtual registers is largely static.
|
||||
If you flip the USR/SSR stack register
|
||||
select bit in the status-register then
|
||||
the corresponding stack registers should
|
||||
reflect the change.
|
||||
|
||||
o a mechanism that clearly separates the
|
||||
gdb internal register cache from any
|
||||
target (not architecture) dependant
|
||||
specifics such as [gG] packets.
|
||||
|
||||
Of course, like anything, it sounds good in theory. In reality, it
|
||||
would have to contend with many<->many relationships at both the
|
||||
virt<->cache and cache<->target level. For instance:
|
||||
|
||||
virt<->cache
|
||||
Modifying an mmx register may involve
|
||||
scattering values across both FP and
|
||||
mmpx specific parts of a buffer
|
||||
|
||||
cache<->target
|
||||
When writing back a SP it may need to
|
||||
both be written to both SP and USP.
|
||||
|
||||
|
||||
Hmm,
|
||||
|
||||
Rather than let this like the last time it was discussed, just slip, I'm
|
||||
first going to add this e-mail (+ references) to TODO. I'd then like to
|
||||
sketch out a broad strategy I think could get us there.
|
||||
|
||||
|
||||
First thing I'd suggest is separating out the ``extern registers[]''
|
||||
code so that we can at least identify what is using it. At present
|
||||
things are scattered across many files. That way we can at least
|
||||
pretend that there is a cache instead of a global array :-)
|
||||
|
||||
I'd then suggest someone putting up a proposal for the pseudo-reg /
|
||||
high-level side interface so that code can be adopted to it. For old
|
||||
code, initially a blanket rename of write_register_bytes() to
|
||||
deprecated_write_register_bytes() would help.
|
||||
|
||||
Following that would, finaly be the corresponding changes to the target.
|
||||
|
||||
--
|
||||
|
||||
|
@ -328,8 +445,20 @@ to GDB.. Anyone interested in learning how to write tests? :-)
|
|||
|
||||
--
|
||||
|
||||
This list is probably not up to date, and opinions vary about the
|
||||
importance or even desirability of some of the items.
|
||||
Add support for Modula3
|
||||
|
||||
Get DEC/Compaq to contribute their Modula-3 support.
|
||||
|
||||
--
|
||||
|
||||
Legacy Wish List
|
||||
================
|
||||
|
||||
This list is not up to date, and opinions vary about the importance or
|
||||
even desirability of some of the items. If you do fix something, it
|
||||
always pays to check the below.
|
||||
|
||||
--
|
||||
|
||||
Document trace machinery.
|
||||
|
||||
|
|
Loading…
Reference in New Issue