Document the support in the kernel for hardware debug registers on the

ix86 platform which allows for hardware watchpoints, etc...

Submitted by:	Brian Dean <brdean@unx.sas.com>
This commit is contained in:
David E. O'Brien 2000-02-12 18:33:54 +00:00
parent e7e960abeb
commit ed0010ed09
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=57168
4 changed files with 33 additions and 1 deletions

View File

@ -202,6 +202,23 @@ it loads the traced process' floating-point registers from the
.Aq Pa machine/reg.h )
pointed to by
.Fa addr .
.It Dv PT_GETDBREGS
This request reads the traced process' debug registers into
the
.Dq Li "struct dbreg"
(defined in
.Aq Pa machine/reg.h )
pointed to by
.Fa addr .
.It Dv PT_SETDBREGS
This request is the converse of
.Dv PT_GETDBREGS ;
it loads the traced process' debug registers from the
.Dq Li "struct dbreg"
(defined in
.Aq Pa machine/reg.h )
pointed to by
.Fa addr .
.El
.Sh RETURN VALUES
Some requests can cause
@ -250,8 +267,10 @@ was neither 0 nor a legal signal number.
.Dv PT_GETREGS ,
.Dv PT_SETREGS ,
.Dv PT_GETFPREGS ,
.Dv PT_SETFPREGS ,
.Dv PT_GETDBREGS ,
or
.Dv PT_SETFPREGS
.Dv PT_SETDBREGS
was attempted on a process with no valid register set. (This is
normally true only of system processes.)
.El

View File

@ -74,6 +74,13 @@ prefix,
in which case that signal is delivered to the process
(see
.Xr sigaction 2 ).
.It Pa dbregs
The debug registers as defined by
.Dv "struct dbregs"
in
.Pa <machine/reg.h> .
.Pa dbregs
is currently only implemented on the i386 architecture.
.It Pa etype
The type of the executable referenced by the
.Pa file

View File

@ -118,6 +118,9 @@ struct fpreg {
unsigned char fpr_pad[64];
};
/*
* Register set accessible via /proc/$pid/dbregs.
*/
struct dbreg {
unsigned int dr0; /* debug address register 0 */
unsigned int dr1; /* debug address register 1 */

View File

@ -118,6 +118,9 @@ struct fpreg {
unsigned char fpr_pad[64];
};
/*
* Register set accessible via /proc/$pid/dbregs.
*/
struct dbreg {
unsigned int dr0; /* debug address register 0 */
unsigned int dr1; /* debug address register 1 */