diff --git a/header.adoc b/header.adoc index 9c52ffc..a761fe8 100644 --- a/header.adoc +++ b/header.adoc @@ -62,6 +62,7 @@ endif::[] - Clarified that full synchronization also takes place on a privilege change (see <> and <>); + - Reworded jump classifications in jump classifications in <> to align with terminology used in other specifications; + - Clarified when to issue sync-support packet when trace is enabled (see <>); + +- Clarified that branch_map can be set to 31 any time an address needs to be reported and the branch map is full (see <>); + - Updated reference encoding algorithm to generalize resync behaviour and add missing trap conditions (see <>); + - Clarified that implicit returns are not stored in the jump target cache (see <>); + - Updated decoder to remove ECALL, EBREAK and C.EBREAK from is_uninferrable_jump function. Including them is harmless but unnecessary, as these instrucitons don't retire (see <>); + diff --git a/payload.adoc b/payload.adoc index 4f17128..2555558 100644 --- a/payload.adoc +++ b/payload.adoc @@ -556,9 +556,7 @@ See <>. When the branch map becomes full it must be reported, but in most cases there is no need to report an address. This is indicated by setting -*branches* to 0. The exception to this is when the instruction -immediately prior to the final branch causes an uninferable -discontinuity, in which case *branches* is set to 31. +*branches* to 0. If the address does need to be reported for any reason (for example because the instruction immediately prior to the final branch causes an uninferable discontinuity) *branches* is set to 31. The choice of sizes (1, 3, 7, 15, 31) is designed to minimize efficiency loss. On average there will be some 'wasted' bits because the number of