diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-20 07:34:22 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-20 07:38:39 +0100 |
commit | 5d44981c2d8891478423af82316576d00f6352ea (patch) | |
tree | 59f5085db3eb721b14e9829faace42314c384597 /c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c | |
parent | bsp/ss555: Move libcpu content to bsps (diff) | |
download | rtems-5d44981c2d8891478423af82316576d00f6352ea.tar.bz2 |
bsp/qoriq: Fix bsp_restart()
Update #3085.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c')
-rw-r--r-- | c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c index ac09971529..36e751e50d 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2016 embedded brains GmbH. All rights reserved. + * Copyright (c) 2016, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -29,22 +29,21 @@ #include <libcpu/powerpc-utility.h> +#include <string.h> + +static char fdt_copy[BSP_FDT_BLOB_SIZE_MAX]; + static RTEMS_NO_RETURN void do_restart(void *addr) { void (*restart)(uintptr_t); - uintptr_t fdt; qoriq_reset_qman_and_bman(); - restart = addr; + memcpy(fdt_copy, bsp_fdt_get(), sizeof(fdt_copy)); + rtems_cache_flush_multiple_data_lines(fdt_copy, sizeof(fdt_copy)); - fdt = (uintptr_t) bsp_fdt_get(); -#ifdef BSP_FDT_BLOB_READ_ONLY - fdt -= (uintptr_t) bsp_section_rodata_begin; - fdt += (uintptr_t) bsp_section_rodata_load_begin; -#endif - - (*restart)(fdt); + restart = addr; + (*restart)((uintptr_t) fdt_copy); bsp_fatal(QORIQ_FATAL_RESTART_FAILED); } |