diff --git a/xml/hwbp_registers.xml b/xml/hwbp_registers.xml
index bf1e28d9..f2b6aa92 100755
--- a/xml/hwbp_registers.xml
+++ b/xml/hwbp_registers.xml
@@ -378,6 +378,10 @@
though the load will not update its destination register. Debuggers
should consider this when setting such breakpoints on, for example,
memory-mapped I/O addresses.
+
+ If an instruction matches this trigger and the instruction performs
+ multiple memory accesses, it is \unspecified which memory accesses
+ have completed before the trigger fires.
@@ -741,15 +745,23 @@
- The trigger fired just before the instruction that triggered it was
- retired, but after all preceding instructions are retired.
+ The trigger fired before the instruction that matched it was
+ retired, but after all preceding instructions are retired. This
+ explicitly allows for instructions partially executing.
\Rxepc or \RcsrDpc (depending on \FcsrMcontrolSixAction) must be set
to the virtual address of the instruction that matched.
- If a load operation matched and \FcsrMcontrolSixSelect=1 then a
- memory access has been performed (including any side effects of
- performing such an access) even though the load has not updated its
- destination register.
+ An instruction that caused a trigger to fire might be executed
+ partially. In that case not all memory accesses may have been
+ performed, and some registers may not have been updated. Executing
+ that instruction again must have the same result as fully executing
+ it the first time would have, except for any effects due to
+ non-idempotent memory. Implementations should avoid partial
+ instruction execution, but it might be unavoidable for instructions
+ that perform a large number of operations.
+
+ For vector instructions, the vstart mechanism can be used to handle
+ partial execution without duplicating memory accesses.
@@ -766,6 +778,9 @@
\Rxepc or \RcsrDpc (depending on \FcsrMcontrolSixAction) must be set
to the virtual address of the next instruction that must be executed
to preserve the program flow.
+
+ If the instruction performed multiple memory accesses, all of them
+ have been completed.