Messages in this thread | | | Subject | Re: [PATCH 3/6] perf cs-etm: Save TRCDEVARCH register | From | James Clark <> | Date | Tue, 3 Aug 2021 13:33:01 +0100 |
| |
On 31/07/2021 07:37, Leo Yan wrote: > I checked ETMv4.3 and ETMv4.4 spec (ARM IHI0064E for ETMv4.3 and ARM > IHI0064F for ETMv4.4), both clarify ETMv4 has the register TRCDEVARCH; > thus TRCDEVARCH is not a new register introduced by ETE. > > For this case, it's good to directly add a new field in the metadata > array for recording register TRCDEVARCH.
This might be true, but the OpenCSD library doesn't take TRCDEVARCH as a config parameter for ETMv4 so it couldn't be used. This is the struct:
typedef struct _ocsd_etmv4_cfg { uint32_t reg_idr0; /**< ID0 register */ uint32_t reg_idr1; /**< ID1 register */ uint32_t reg_idr2; /**< ID2 register */ uint32_t reg_idr8; uint32_t reg_idr9; uint32_t reg_idr10; uint32_t reg_idr11; uint32_t reg_idr12; uint32_t reg_idr13; uint32_t reg_configr; /**< Config Register */ uint32_t reg_traceidr; /**< Trace Stream ID register */ ocsd_arch_version_t arch_ver; /**< Architecture version */ ocsd_core_profile_t core_prof; /**< Core Profile */ } ocsd_etmv4_cfg;
And this is ETE where TRCDEVARCH is used:
typedef struct _ocsd_ete_cfg { uint32_t reg_idr0; /**< ID0 register */ uint32_t reg_idr1; /**< ID1 register */ uint32_t reg_idr2; /**< ID2 register */ uint32_t reg_idr8; /**< ID8 - maxspec */ uint32_t reg_devarch; /**< DevArch register */ uint32_t reg_configr; /**< Config Register */ uint32_t reg_traceidr; /**< Trace Stream ID register */ ocsd_arch_version_t arch_ver; /**< Architecture version */ ocsd_core_profile_t core_prof; /**< Core Profile */ } ocsd_ete_cfg;
Thanks James
| |