X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farmv7a_cache_l2x.c;h=798843835b09e7c98a822afe44a895bd507db676;hb=03942f867a0de1eff13828e15b9798a1e589b169;hp=13156193848275511bb1cfa51f4f8c83c4e38d17;hpb=cd440bd32a120a9b4c2d703d3d16dd52f16edab2;p=openocd.git diff --git a/src/target/armv7a_cache_l2x.c b/src/target/armv7a_cache_l2x.c index 1315619384..798843835b 100644 --- a/src/target/armv7a_cache_l2x.c +++ b/src/target/armv7a_cache_l2x.c @@ -11,6 +11,9 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -29,7 +32,7 @@ static int arm7a_l2x_sanity_check(struct target *target) { struct armv7a_common *armv7a = target_to_armv7a(target); struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a->armv7a_mmu.armv7a_cache.l2_cache); + (armv7a->armv7a_mmu.armv7a_cache.outer_cache); if (target->state != TARGET_HALTED) { LOG_ERROR("%s: target not halted", __func__); @@ -46,11 +49,11 @@ static int arm7a_l2x_sanity_check(struct target *target) /* * clean and invalidate complete l2x cache */ -static int arm7a_l2x_flush_all_data(struct target *target) +int arm7a_l2x_flush_all_data(struct target *target) { struct armv7a_common *armv7a = target_to_armv7a(target); struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a->armv7a_mmu.armv7a_cache.l2_cache); + (armv7a->armv7a_mmu.armv7a_cache.outer_cache); uint32_t l2_way_val; int retval; @@ -70,7 +73,7 @@ int armv7a_l2x_cache_flush_virt(struct target *target, uint32_t virt, { struct armv7a_common *armv7a = target_to_armv7a(target); struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a->armv7a_mmu.armv7a_cache.l2_cache); + (armv7a->armv7a_mmu.armv7a_cache.outer_cache); /* FIXME: different controllers have different linelen? */ uint32_t i, linelen = 32; int retval; @@ -106,7 +109,7 @@ static int armv7a_l2x_cache_inval_virt(struct target *target, uint32_t virt, { struct armv7a_common *armv7a = target_to_armv7a(target); struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a->armv7a_mmu.armv7a_cache.l2_cache); + (armv7a->armv7a_mmu.armv7a_cache.outer_cache); /* FIXME: different controllers have different linelen */ uint32_t i, linelen = 32; int retval; @@ -142,7 +145,7 @@ static int armv7a_l2x_cache_clean_virt(struct target *target, uint32_t virt, { struct armv7a_common *armv7a = target_to_armv7a(target); struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a->armv7a_mmu.armv7a_cache.l2_cache); + (armv7a->armv7a_mmu.armv7a_cache.outer_cache); /* FIXME: different controllers have different linelen */ uint32_t i, linelen = 32; int retval; @@ -177,9 +180,9 @@ static int arm7a_handle_l2x_cache_info_command(struct command_context *cmd_ctx, struct armv7a_cache_common *armv7a_cache) { struct armv7a_l2x_cache *l2x_cache = (struct armv7a_l2x_cache *) - (armv7a_cache->l2_cache); + (armv7a_cache->outer_cache); - if (armv7a_cache->ctype == -1) { + if (armv7a_cache->info == -1) { command_print(cmd_ctx, "cache not yet identified"); return ERROR_OK; } @@ -198,7 +201,7 @@ static int armv7a_l2x_cache_init(struct target *target, uint32_t base, uint32_t struct target *curr; struct armv7a_common *armv7a = target_to_armv7a(target); - if (armv7a->armv7a_mmu.armv7a_cache.l2_cache) { + if (armv7a->armv7a_mmu.armv7a_cache.outer_cache) { LOG_ERROR("L2 cache was already initialised\n"); return ERROR_FAIL; } @@ -206,7 +209,7 @@ static int armv7a_l2x_cache_init(struct target *target, uint32_t base, uint32_t l2x_cache = calloc(1, sizeof(struct armv7a_l2x_cache)); l2x_cache->base = base; l2x_cache->way = way; - armv7a->armv7a_mmu.armv7a_cache.l2_cache = l2x_cache; + armv7a->armv7a_mmu.armv7a_cache.outer_cache = l2x_cache; /* initialize all targets in this cluster (smp target) * l2 cache must be configured after smp declaration */ @@ -214,11 +217,11 @@ static int armv7a_l2x_cache_init(struct target *target, uint32_t base, uint32_t curr = head->target; if (curr != target) { armv7a = target_to_armv7a(curr); - if (armv7a->armv7a_mmu.armv7a_cache.l2_cache) { + if (armv7a->armv7a_mmu.armv7a_cache.outer_cache) { LOG_ERROR("smp target : cache l2 already initialized\n"); return ERROR_FAIL; } - armv7a->armv7a_mmu.armv7a_cache.l2_cache = l2x_cache; + armv7a->armv7a_mmu.armv7a_cache.outer_cache = l2x_cache; } head = head->next; }