diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-22 13:02:55 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-22 14:30:06 +0200 |
commit | 178180aa1c3f8804900476d1c671c2f090c0eea9 (patch) | |
tree | e4dc6d9ca6a64c52ce4da1560cd196e5bbc15ea9 /c/src/lib/libbsp/shared/src/bsp-fdt.c | |
parent | powerpc: Add FSL_EIS_TENSR, etc. defines (diff) | |
download | rtems-178180aa1c3f8804900476d1c671c2f090c0eea9.tar.bz2 |
bsps: Copy FDT only if source != destination
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/shared/src/bsp-fdt.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/shared/src/bsp-fdt.c b/c/src/lib/libbsp/shared/src/bsp-fdt.c index 1b149d9aa3..635cb85571 100644 --- a/c/src/lib/libbsp/shared/src/bsp-fdt.c +++ b/c/src/lib/libbsp/shared/src/bsp-fdt.c @@ -42,15 +42,18 @@ void bsp_fdt_copy(const void *src) #else uint32_t *d = &bsp_fdt_blob[0]; #endif - uint32_t m = MIN(sizeof(bsp_fdt_blob), fdt_totalsize(src)); - uint32_t n = (m + sizeof(*d) - 1) / sizeof(*d); - uint32_t i; - for (i = 0; i < n; ++i) { - d[i] = s[i]; - } + if (s != d) { + uint32_t m = MIN(sizeof(bsp_fdt_blob), fdt_totalsize(src)); + uint32_t n = (m + sizeof(*d) - 1) / sizeof(*d); + uint32_t i; + + for (i = 0; i < n; ++i) { + d[i] = s[i]; + } - rtems_cache_flush_multiple_data_lines(d, m); + rtems_cache_flush_multiple_data_lines(d, m); + } } const void *bsp_fdt_get(void) |