On Wed, Dec 04, 2002 at 06:54:02PM +0100, Maciej W. Rozycki wrote:
> On Wed, 4 Dec 2002, Daniel Jacobowitz wrote:
>
> > Sorry, by "not handy" I meant I didn't have the manuals available :)
>
> 'http://www.mips.com/Documentation/R4400_Uman_book_Ed2.pdf' or see under
> "Publications"/"R4000...". There are other sources of the book available,
> e.g. somewhere within SGI web pages. R10k implements a single watchpoint
> this way, too.
>
> > > What do you think?
> >
> > You don't reveal to userland what size watchpoints are available - i.e.
> > how large a watchpoint can be. Does the mask match the hardware
> > implementation, and what are the restrictions on it?
>
> For that you set up a disabled watchpoint with a mask set to all ones (or
> the range you are interested in). Then when you retrieve it, you may see
> which bits stayed at ones. Similarly you may check for hardwired
> don't-cares by using a mask with all zeroes. The mask may differ for each
> watchpoint, e.g. for R4650 it's different for IWatch and DWatch, so you
> really want to have a per-watchpoint setting. Also the MIPS32/64 ISA
> specification implies a mask need not be contiguous.
>
> Similarly you may check for access types permitted, by enabling all of
> them (or ones you are interested in) and seeing which ones remained
> enabled. Per-watchpoint, again.
>
> I'd prefer not to overdesign the API leaving as much information as
> possible passed as is. This way userland gets more control over what's
> available.
That way we expose more of the hardware to userland; and the thing
that's most important to me is that GDB not have to know if it's on a
MIPS32 or an R4650 when determining how watchpoints work.
IWatch/DWatch are two particular watchpoints or distinguished by access
type? I.E. what would GDB need to know to know which it is setting?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
|