mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
gcov: add stub table size entry
This commit is contained in:
@ -125,8 +125,8 @@ int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
|
|||||||
uint32_t capabilities = 0;
|
uint32_t capabilities = 0;
|
||||||
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
|
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
|
||||||
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
|
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
|
||||||
if (esp_dbg_stub_entry_get(ESP_DBG_STUB_CAPABILITIES, &capabilities) == ESP_OK) {
|
if (esp_dbg_stub_entry_get(ESP_DBG_STUB_ENTRY_CAPABILITIES, &capabilities) == ESP_OK) {
|
||||||
esp_dbg_stub_entry_set(ESP_DBG_STUB_CAPABILITIES, capabilities | ESP_DBG_STUB_CAP_GCOV_TASK);
|
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_CAPABILITIES, capabilities | ESP_DBG_STUB_CAP_GCOV_TASK);
|
||||||
}
|
}
|
||||||
esp_register_freertos_tick_hook(gcov_create_task_tick_hook);
|
esp_register_freertos_tick_hook(gcov_create_task_tick_hook);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
|
@ -21,11 +21,12 @@
|
|||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ESP_DBG_STUB_MAGIC_NUM,
|
ESP_DBG_STUB_MAGIC_NUM,
|
||||||
|
ESP_DBG_STUB_TABLE_SIZE,
|
||||||
ESP_DBG_STUB_CONTROL_DATA, ///< stubs descriptor entry
|
ESP_DBG_STUB_CONTROL_DATA, ///< stubs descriptor entry
|
||||||
ESP_DBG_STUB_ENTRY_FIRST,
|
ESP_DBG_STUB_ENTRY_FIRST,
|
||||||
ESP_DBG_STUB_ENTRY_GCOV ///< GCOV entry
|
ESP_DBG_STUB_ENTRY_GCOV ///< GCOV entry
|
||||||
= ESP_DBG_STUB_ENTRY_FIRST,
|
= ESP_DBG_STUB_ENTRY_FIRST,
|
||||||
ESP_DBG_STUB_CAPABILITIES,
|
ESP_DBG_STUB_ENTRY_CAPABILITIES,
|
||||||
ESP_DBG_STUB_ENTRY_MAX
|
ESP_DBG_STUB_ENTRY_MAX
|
||||||
} esp_dbg_stub_id_t;
|
} esp_dbg_stub_id_t;
|
||||||
|
|
||||||
|
@ -77,12 +77,13 @@ void esp_dbg_stubs_init(void)
|
|||||||
s_dbg_stubs_ctl_data.data_free = (uint32_t)esp_dbg_stubs_data_free;
|
s_dbg_stubs_ctl_data.data_free = (uint32_t)esp_dbg_stubs_data_free;
|
||||||
|
|
||||||
s_stub_entry[ESP_DBG_STUB_MAGIC_NUM] = ESP_DBG_STUB_MAGIC_NUM_VAL;
|
s_stub_entry[ESP_DBG_STUB_MAGIC_NUM] = ESP_DBG_STUB_MAGIC_NUM_VAL;
|
||||||
|
s_stub_entry[ESP_DBG_STUB_TABLE_SIZE] = ESP_DBG_STUB_ENTRY_MAX;
|
||||||
s_stub_entry[ESP_DBG_STUB_CONTROL_DATA] = (uint32_t)&s_dbg_stubs_ctl_data;
|
s_stub_entry[ESP_DBG_STUB_CONTROL_DATA] = (uint32_t)&s_dbg_stubs_ctl_data;
|
||||||
eri_write(ESP_DBG_STUBS_TRAX_REG, (uint32_t)s_stub_entry);
|
eri_write(ESP_DBG_STUBS_TRAX_REG, (uint32_t)s_stub_entry);
|
||||||
ESP_LOGV(TAG, "%s stubs %x", __func__, eri_read(ESP_DBG_STUBS_TRAX_REG));
|
ESP_LOGV(TAG, "%s stubs %x", __func__, eri_read(ESP_DBG_STUBS_TRAX_REG));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: add lock mechanism. Not now but in the future ESP_DBG_STUB_CAPABILITIES can be set from different places.
|
// TODO: add lock mechanism. Not now but in the future ESP_DBG_STUB_ENTRY_CAPABILITIES can be set from different places.
|
||||||
esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry)
|
esp_err_t esp_dbg_stub_entry_set(esp_dbg_stub_id_t id, uint32_t entry)
|
||||||
{
|
{
|
||||||
if (id < ESP_DBG_STUB_ENTRY_FIRST || id >= ESP_DBG_STUB_ENTRY_MAX) {
|
if (id < ESP_DBG_STUB_ENTRY_FIRST || id >= ESP_DBG_STUB_ENTRY_MAX) {
|
||||||
|
Reference in New Issue
Block a user