|
@@ -434,6 +434,8 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
|
|
ulong blob_end = os.end;
|
|
ulong blob_end = os.end;
|
|
ulong image_start = os.image_start;
|
|
ulong image_start = os.image_start;
|
|
ulong image_len = os.image_len;
|
|
ulong image_len = os.image_len;
|
|
|
|
+ ulong flush_start = ALIGN_DOWN(load, ARCH_DMA_MINALIGN);
|
|
|
|
+ ulong flush_len = *load_end - load;
|
|
bool no_overlap;
|
|
bool no_overlap;
|
|
void *load_buf, *image_buf;
|
|
void *load_buf, *image_buf;
|
|
int err;
|
|
int err;
|
|
@@ -447,7 +449,11 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
|
|
bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE);
|
|
bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
- flush_cache(load, ALIGN(*load_end - load, ARCH_DMA_MINALIGN));
|
|
|
|
|
|
+
|
|
|
|
+ if (flush_start < load)
|
|
|
|
+ flush_len += load - flush_start;
|
|
|
|
+
|
|
|
|
+ flush_cache(flush_start, ALIGN(flush_len, ARCH_DMA_MINALIGN));
|
|
|
|
|
|
debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
|
|
debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
|
|
bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED);
|
|
bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED);
|