diff options
| author | Trent Piepho <[email protected]> | 2019-03-27 23:50:09 +0000 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2019-04-23 17:57:27 -0400 |
| commit | b4353b371322b54d8effd8737e3f7ba021950180 (patch) | |
| tree | 361d800d7173ed5302d748627335a645c3f66ee4 | |
| parent | 4c6be01c2719e78cd7ff257dd65a666623566863 (diff) | |
bootm: Simplying cache flush code
The cache flush of the kernel load area needs to be aligned outward to
the DMA cache alignment. The operations are simpler if we think of this
as aligning the start down, ALIGN_DOWN(load, ARCH_DMA_MINALIGN), and
aligning the end up, ALIGN(load_end, ARCH_DMA_MINALIGN), and then find
the length of the flushed region by subtracting the former from the
latter.
Cc: Tom Rini <[email protected]>
Cc: Simon Glass <[email protected]>
Cc: Bryan O'Donoghue <[email protected]>
Signed-off-by: Trent Piepho <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
| -rw-r--r-- | common/bootm.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/common/bootm.c b/common/bootm.c index 3adbceaa38e..42358b81fc9 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -450,7 +450,6 @@ static int bootm_load_os(bootm_headers_t *images, int boot_progress) ulong image_start = os.image_start; ulong image_len = os.image_len; ulong flush_start = ALIGN_DOWN(load, ARCH_DMA_MINALIGN); - ulong flush_len; bool no_overlap; void *load_buf, *image_buf; int err; @@ -465,11 +464,7 @@ static int bootm_load_os(bootm_headers_t *images, int boot_progress) return err; } - flush_len = load_end - load; - if (flush_start < load) - flush_len += load - flush_start; - - flush_cache(flush_start, ALIGN(flush_len, ARCH_DMA_MINALIGN)); + flush_cache(flush_start, ALIGN(load_end, ARCH_DMA_MINALIGN) - flush_start); debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, load_end); bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED); |
