]> git.sur5r.net Git - u-boot/blobdiff - lib/lmb.c
Merge branch 'master' of git://git.denx.de/u-boot-spi
[u-boot] / lib / lmb.c
index 081e4181b45c10c4980062eb5506ae4bfa0e4948..170541734869c52e47c32b23c7c353b3ec01cd6c 100644 (file)
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -1,10 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Procedures for maintaining information about logical memory blocks.
  *
  * Peter Bergner, IBM Corp.    June 2001.
  * Copyright (C) 2001 Peter Bergner.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -236,7 +235,7 @@ long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size)
        return lmb_add_region(_rgn, base, size);
 }
 
-long lmb_overlaps_region(struct lmb_region *rgn, phys_addr_t base,
+static long lmb_overlaps_region(struct lmb_region *rgn, phys_addr_t base,
                                phys_size_t size)
 {
        unsigned long i;
@@ -295,7 +294,10 @@ phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, phy
                if (max_addr == LMB_ALLOC_ANYWHERE)
                        base = lmb_align_down(lmbbase + lmbsize - size, align);
                else if (lmbbase < max_addr) {
-                       base = min(lmbbase + lmbsize, max_addr);
+                       base = lmbbase + lmbsize;
+                       if (base < lmbbase)
+                               base = -1;
+                       base = min(base, max_addr);
                        base = lmb_align_down(base - size, align);
                } else
                        continue;
@@ -332,14 +334,12 @@ int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
        return 0;
 }
 
-void __board_lmb_reserve(struct lmb *lmb)
+__weak void board_lmb_reserve(struct lmb *lmb)
 {
        /* please define platform specific board_lmb_reserve() */
 }
-void board_lmb_reserve(struct lmb *lmb) __attribute__((weak, alias("__board_lmb_reserve")));
 
-void __arch_lmb_reserve(struct lmb *lmb)
+__weak void arch_lmb_reserve(struct lmb *lmb)
 {
        /* please define platform specific arch_lmb_reserve() */
 }
-void arch_lmb_reserve(struct lmb *lmb) __attribute__((weak, alias("__arch_lmb_reserve")));