The motivation is to provide access to these registers from userspace
via ptrace(2).
As is, this is an ABI-breaking change. So far I have been unable to come
up with any ways of providing compatibility that are not completely
messy. The main difficulty of this comes from the fact that the
copyin/copyout is performed in the MI function sys_ptrace(), with length
sizeof(struct dbregs).
Fortunately, it does not appear there are any consumers of this
interface in base or in ports, on arm64. Two large potential consumers
of this interface, gdb and lldb, have not yet been taught to use it.
Since PT_GETDBREGS is FreeBSD-specific, we may be able to make this
change now without major consequence.
One alternative solution would be to add one or more arm64-specific
ptrace requests, whose purpose is to get or set the watchpoint
registers. This would preserve the ABI, but is slightly less convenient
for consumers.
PR: 252860