X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fmips_m4k.c;h=d7e426521c0c0673e7bd6a5e5aa5944a5fb4f2e1;hp=c2922ce946ea8188d52695c74f2c66ea0aa73353;hb=915e06b3f0e389a9350da0432e2da5ff0fe4e01e;hpb=518ce9e19e45d55b2e239ba99c457e018432d4ee diff --git a/src/target/mips_m4k.c b/src/target/mips_m4k.c index c2922ce946..d7e426521c 100644 --- a/src/target/mips_m4k.c +++ b/src/target/mips_m4k.c @@ -1131,6 +1131,7 @@ static int mips_m4k_bulk_write_memory(struct target *target, uint32_t address, { struct mips32_common *mips32 = target_to_mips32(target); struct mips_ejtag *ejtag_info = &mips32->ejtag_info; + struct working_area *fast_data_area; int retval; int write_t = 1; @@ -1157,6 +1158,17 @@ static int mips_m4k_bulk_write_memory(struct target *target, uint32_t address, ejtag_info->fast_access_save = -1; } + fast_data_area = mips32->fast_data_area; + + if (address <= fast_data_area->address + fast_data_area->size && + fast_data_area->address <= address + count) { + LOG_ERROR("fast_data (0x%8.8" PRIx32 ") is within write area " + "(0x%8.8" PRIx32 "-0x%8.8" PRIx32 ").", + fast_data_area->address, address, address + count); + LOG_ERROR("Change work-area-phys or load_image address!"); + return ERROR_FAIL; + } + /* mips32_pracc_fastdata_xfer requires uint32_t in host endianness, */ /* but byte array represents target endianness */ uint32_t *t = NULL;