deferred stores as a solution to store register api?

Andrew Cagney ac131313@cygnus.com
Thu May 11 18:12:00 GMT 2000


"J.T. Conklin" wrote:
> 
> As has been mentioned on this list before, the (to_store_register) API
> is deficient as it allows exactly one or all registers to be stored at
> a time.  This leads to inefficiencies that add noticeable latency when
> using a remote debug protocol or rom monitor.
> 
> One example is when a small set of registers (commonly pc, sp, and fp)
> are updated sequentially.  If the target vector does not support a
> store single register command, the entire register set is written for
> each update.  Another example is when a large number of registers are
> updated (for example restoring register values after an inferior
> function call).  In this case, it would be more efficient to store all
> registers at once.
> 
> I thinking this can be addressed with minimal impact by formalizing
> the CLEAR_DEFERRED_STORES and DO_DEFERRED_STORES macros currently used
> by the sunos/sparc port by making them part of the target vector.  The
> vector code could then decide whether to store a single, a group, or a
> entire set of registers based on which registers are marked to be
> stored and the capabilities of the target.

How do you expect these extensions to the interface to be used? 
Something like:

	prepare_to_store ();
	store_register ();
	...
	do_defered_stores ();

for a sequence of registers.  What about for a single register?  For
instance:

	(gdb) set $reg = value

would such a write be defered as above or go out immediatly?

	Andrew


More information about the Gdb mailing list