summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-22 13:02:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-22 14:30:06 +0200
commit178180aa1c3f8804900476d1c671c2f090c0eea9 (patch)
treee4dc6d9ca6a64c52ce4da1560cd196e5bbc15ea9
parentpowerpc: Add FSL_EIS_TENSR, etc. defines (diff)
downloadrtems-178180aa1c3f8804900476d1c671c2f090c0eea9.tar.bz2
bsps: Copy FDT only if source != destination
-rw-r--r--c/src/lib/libbsp/shared/src/bsp-fdt.c17
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)