On Mon, Nov 25, 2002 at 12:55:11PM +0100, Maciej W. Rozycki wrote:
> On Mon, 25 Nov 2002, Ralf Baechle wrote:
> > The whole watch stuff in the the kernel is pretty much an ad-hoc API
> > which I did create to debug a stack overflow. I'm sure if you're
> > going to use it you'll find problems. For userspace for example you'd
> > have to switch the watch register when switching the MMU context so
> > each process gets it's own virtual watch register. Beyond that there
> > are at least two different formats of watch registers implemented in
> > actual silicon, the original R4000-style and the MIPS32/MIPS64 style
> > watch registers and the kernel's watch code only know the R4000 style
> > one. So check your CPU's manual ...
> I think the best use of the watch exception would be making it available
> to userland via PTRACE_PEEKUSR and PTRACE_POKEUSR for hardware watchpoint
> support (e.g. for gdb). Hardware support is absolutely necessary for
> watching read accesses and much beneficial for write ones (otherwise gdb
> single-steps code which sucks performace-wise).
(Although that isn't necessary; page-protection watchpoints are on my
TODO for next year. They aren't quite as efficient as hardware
watchpoints but they don't require hardware support either, just an
Heck, you can even do read watchpoints that way.
In any case, yes, the thing to do is choose an API for these and expose
them via ptrace; not necessarily in PEEKUSER though. There's no cost
to adding new PTRACE_* ops.
MontaVista Software Debian GNU/Linux Developer