On 03/01/2023 11:49, James Clark wrote:
On 23/12/2022 09:28, Mike Leach wrote:
Hi,
There was a discussion some time ago in one of our coresight regular dev meetings about this.
Can we just use only the necessary bits that TS source needs and leave the remaining bits from the 64 as unused for future expansion - i..e use this as a bitfield rather than have 64 bits occupied for what is effectively a 2 bit value.
Perhaps call the full value something other than TS_SOURCE and have a TS_SOURCE field with a known safe unset value.
If we did that, there wouldn't be any mechanism to detect if new values that were added were the value 0, or just not set/implemented/saved in the file. The current implementation of CS_ETM_NR_TRC_PARAMS allows us to add new fields, and detect if they exist or not without bumping the header version for each new sub field.
In this change HAS_PARAM() has been used to do this, but that can't be expanded to sub fields in the same 64 bits. I don't think space or performance are worth the extra complexity of dividing it up. And because this is just one block saved once in the header, so I'm not sure if it's worth it in this case. It would also make it harder to read the values on the raw dump mode.
I think it is fine to use the entire field for the time source, given the header can be extended with new fields, without breaking compatibility for future additions.
Suzuki
James