X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Farmv7m.c;h=15de8cd9c71e3b7d2aff2d8d1496c2fe4cf5cc37;hp=ccb3e5456e5037abb104b830d0fad151be416f14;hb=b01b5fe13a67d6ff33b792348c24c5f92a5a8a1b;hpb=33e406824c5d522703829189bb0f55967b887ec5 diff --git a/src/target/armv7m.c b/src/target/armv7m.c index ccb3e5456e..15de8cd9c7 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -622,6 +622,34 @@ struct reg_cache *armv7m_build_reg_cache(struct target *target) return cache; } +void armv7m_free_reg_cache(struct target *target) +{ + struct armv7m_common *armv7m = target_to_armv7m(target); + struct arm *arm = &armv7m->arm; + struct reg_cache *cache; + struct reg *reg; + unsigned int i; + + cache = arm->core_cache; + + if (!cache) + return; + + for (i = 0; i < cache->num_regs; i++) { + reg = &cache->reg_list[i]; + + free(reg->feature); + free(reg->reg_data_type); + free(reg->value); + } + + free(cache->reg_list[0].arch_info); + free(cache->reg_list); + free(cache); + + arm->core_cache = NULL; +} + static int armv7m_setup_semihosting(struct target *target, int enable) { /* nothing todo for armv7m */