Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
Operating System: ReactOS
Platform: x86 Hardware
Description
KGDB's support of hardware breakpoints does not seem to fully match the hardware definition.
According to Wikipedia's info on the debug registers (http://en.wikipedia.org/wiki/X86_debug_register):
"Bits 16-17 (DR0), 20-21 (DR1), 24-25 (DR2), 28-29 (DR3), define when breakpoints trigger. Each breakpoint has a two-bit entry that specifies whether they break on
execution (00b), data write (01b), data read or write (11b). 10b is defined to mean break on IO read or write but no hardware supports it."
==> KDBG has a fourth option "read" which is not in the above list. It maps to 11b just like "read-write". Since it's redundant, it should be removed. The other option (10b) which is not supported in hardware of course won't need to be supported by KGDB either.
Continuing with Wikipedia:
"Bits 18-19 (DR0), 22-23 (DR1), 26-27 (DR2), 30-31 (DR3), define how large area of memory is watched by breakpoints. Again each breakpoint has a two-bit entry that specifies whether they watch one (00b), two (01b), eight (10b) or four (11b) bytes."
==> KGDB currently supports byte, word and dword, but qword should also be supported (10b).