ETM: simplify ETM initialization code paths
authorDavid Brownell <dbrownell@users.sourceforge.net>
Sat, 14 Nov 2009 00:26:39 +0000 (16:26 -0800)
committerDavid Brownell <dbrownell@users.sourceforge.net>
Sat, 14 Nov 2009 00:26:39 +0000 (16:26 -0800)
Return NULL from etm_build_reg_cache() not ERROR_OK; and share
code on that fault path.

Let ETM code handle any tracking of its cache -- not callers.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
src/target/arm7tdmi.c
src/target/arm9tdmi.c
src/target/etm.c

index 029dce1c3db6259f372f6ef9f98340bf4cf1d282..c7bbd776274a091494480758cc58818a109dec41 100644 (file)
@@ -664,12 +664,10 @@ int arm7tdmi_examine(struct target *target)
                arm7_9->eice_cache = (*cache_p);
 
                if (arm7_9->armv4_5_common.etm)
-               {
-                       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
                        (*cache_p)->next = etm_build_reg_cache(target,
-                                       jtag_info, arm7_9->armv4_5_common.etm);
-                       arm7_9->armv4_5_common.etm->reg_cache = (*cache_p)->next;
-               }
+                                       &arm7_9->jtag_info,
+                                       arm7_9->armv4_5_common.etm);
+
                target_set_examined(target);
        }
        if ((retval = embeddedice_setup(target)) != ERROR_OK)
index 147c0903e02d0363235ef96b31b22ec5ad89cb2a..fc110733e015451e1b58df987234d66dbf253ab9 100644 (file)
@@ -759,12 +759,10 @@ int arm9tdmi_examine(struct target *target)
                arm7_9->eice_cache = (*cache_p);
 
                if (arm7_9->armv4_5_common.etm)
-               {
-                       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
                        (*cache_p)->next = etm_build_reg_cache(target,
-                                       jtag_info, arm7_9->armv4_5_common.etm);
-                       arm7_9->armv4_5_common.etm->reg_cache = (*cache_p)->next;
-               }
+                                       &arm7_9->jtag_info,
+                                       arm7_9->armv4_5_common.etm);
+
                target_set_examined(target);
        }
        if ((retval = embeddedice_setup(target)) != ERROR_OK)
index 43158b5667cffdb06913ff3d86497c839154b77b..4c94e6bf051117c356a0109a94a9252ed384dd44 100644 (file)
@@ -349,10 +349,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
                        break;
                default:
                        LOG_WARNING("Bad ETMv1 protocol %d", config >> 28);
-                       free(reg_cache);
-                       free(reg_list);
-                       free(arch_info);
-                       return ERROR_OK;
+                       goto fail;
                }
        }
        etm_ctx->bcd_vers = bcd_vers;
@@ -396,10 +393,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
                if (!etb)
                {
                        LOG_ERROR("etb selected as etm capture driver, but no ETB configured");
-                       free(reg_cache);
-                       free(reg_list);
-                       free(arch_info);
-                       return ERROR_OK;
+                       goto fail;
                }
 
                reg_cache->next = etb_build_reg_cache(etb);
@@ -409,6 +403,12 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
 
        etm_ctx->reg_cache = reg_cache;
        return reg_cache;
+
+fail:
+       free(reg_cache);
+       free(reg_list);
+       free(arch_info);
+       return NULL;
 }
 
 static int etm_read_reg(struct reg *reg)

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)