mips_m4k.c: make sure fast_data_area is safe
If load_image address overlap with fast_data_area, it will caouse different mysterius issues. This patch should prevent it. Change-Id: Ibc95e5aa3ac002a59755029496b6a72616e9287f Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> Reviewed-on: http://openocd.zylin.com/1854 Tested-by: jenkins Reviewed-by: Salvador Arroyo <sarroyofdez@yahoo.es> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
parent
518ce9e19e
commit
915e06b3f0
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue