|
|
|
@@ -1040,32 +1040,33 @@ int target_alloc_working_area(struct target_s *target, uint32_t size, working_ar
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int retval;
|
|
|
|
int retval;
|
|
|
|
int enabled;
|
|
|
|
int enabled;
|
|
|
|
|
|
|
|
|
|
|
|
retval = target->type->mmu(target, &enabled);
|
|
|
|
retval = target->type->mmu(target, &enabled);
|
|
|
|
if (retval != ERROR_OK)
|
|
|
|
if (retval != ERROR_OK)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return retval;
|
|
|
|
return retval;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (enabled)
|
|
|
|
if (!enabled) {
|
|
|
|
{
|
|
|
|
if (target->working_area_phys_spec) {
|
|
|
|
if (target->working_area_phys_spec)
|
|
|
|
LOG_DEBUG("MMU disabled, using physical "
|
|
|
|
{
|
|
|
|
"address for working memory 0x%08x",
|
|
|
|
LOG_DEBUG("MMU disabled, using physical address for working memory 0x%08x", (unsigned)target->working_area_phys);
|
|
|
|
(unsigned)target->working_area_phys);
|
|
|
|
target->working_area = target->working_area_phys;
|
|
|
|
target->working_area = target->working_area_phys;
|
|
|
|
} else
|
|
|
|
} else {
|
|
|
|
{
|
|
|
|
LOG_ERROR("No working memory available. "
|
|
|
|
LOG_ERROR("No working memory available. Specify -work-area-phys to target.");
|
|
|
|
"Specify -work-area-phys to target.");
|
|
|
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
|
|
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
} else {
|
|
|
|
{
|
|
|
|
if (target->working_area_virt_spec) {
|
|
|
|
if (target->working_area_virt_spec)
|
|
|
|
LOG_DEBUG("MMU enabled, using virtual "
|
|
|
|
{
|
|
|
|
"address for working memory 0x%08x",
|
|
|
|
LOG_DEBUG("MMU enabled, using virtual address for working memory 0x%08x", (unsigned)target->working_area_virt);
|
|
|
|
(unsigned)target->working_area_virt);
|
|
|
|
target->working_area = target->working_area_virt;
|
|
|
|
target->working_area = target->working_area_virt;
|
|
|
|
} else
|
|
|
|
} else {
|
|
|
|
{
|
|
|
|
LOG_ERROR("No working memory available. "
|
|
|
|
LOG_ERROR("No working memory available. Specify -work-area-virt to target.");
|
|
|
|
"Specify -work-area-virt to target.");
|
|
|
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
|
|
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|