summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/efi_memory.c2
-rw-r--r--lib/fdtdec.c38
-rw-r--r--lib/hashtable.c7
-rw-r--r--lib/libfdt/Makefile1
-rw-r--r--lib/libfdt/fdt_check.c2
-rw-r--r--lib/lmb.c26
-rw-r--r--lib/rsa/Kconfig8
-rw-r--r--lib/string.c51
8 files changed, 76 insertions, 59 deletions
diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
index c3da7c20cb2..2feb29f0a2c 100644
--- a/lib/efi_loader/efi_memory.c
+++ b/lib/efi_loader/efi_memory.c
@@ -871,7 +871,7 @@ static void add_u_boot_and_runtime(void)
/* Add U-Boot */
uboot_start = ((uintptr_t)map_sysmem(gd->start_addr_sp, 0) -
uboot_stack_size) & ~EFI_PAGE_MASK;
- uboot_pages = ((uintptr_t)map_sysmem(gd->initial_relocaddr - 1, 0) -
+ uboot_pages = ((uintptr_t)map_sysmem(gd->ram_top - 1, 0) -
uboot_start + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT;
efi_update_memory_map(uboot_start, uboot_pages, EFI_BOOT_SERVICES_CODE,
false, false);
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index b91e067106d..c67b6e8c133 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -35,7 +35,6 @@
#include <linux/ctype.h>
#include <linux/lzo.h>
#include <linux/ioport.h>
-#include <asm/global_data.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -1143,14 +1142,14 @@ int fdtdec_setup_memory_banksize(void)
if (ret != 0)
return -EINVAL;
- gd->dram[bank].start = (phys_addr_t)res.start;
- gd->dram[bank].size =
+ gd->bd->bi_dram[bank].start = (phys_addr_t)res.start;
+ gd->bd->bi_dram[bank].size =
(phys_size_t)(res.end - res.start + 1);
debug("%s: DRAM Bank #%d: start = %pap, size = %pap\n",
__func__, bank,
- &gd->dram[bank].start,
- &gd->dram[bank].size);
+ &gd->bd->bi_dram[bank].start,
+ &gd->bd->bi_dram[bank].size);
}
return 0;
@@ -1823,12 +1822,17 @@ int fdtdec_setup(void)
int ret = -ENOENT;
/*
- * If allowing a bloblist, check that first. The necessary test is
- * whether the previous phase passed a bloblist, not whether this phase
- * creates one.
+ * If allowing a bloblist, check that first. There was discussion about
+ * adding an OF_BLOBLIST Kconfig, but this was rejected.
+ *
+ * The necessary test is whether the previous phase passed a bloblist,
+ * not whether this phase creates one.
*/
- if (CONFIG_IS_ENABLED(BLOBLIST) && (xpl_phase() > PHASE_TPL)) {
- if (bloblist_exists()) {
+ if (CONFIG_IS_ENABLED(BLOBLIST) &&
+ (xpl_prev_phase() != PHASE_TPL ||
+ IS_ENABLED(CONFIG_TPL_BLOBLIST))) {
+ ret = bloblist_maybe_init();
+ if (!ret) {
gd->fdt_blob = bloblist_find(BLOBLISTT_CONTROL_FDT, 0);
if (gd->fdt_blob) {
gd->fdt_src = FDTSRC_BLOBLIST;
@@ -1931,7 +1935,7 @@ int fdtdec_resetup(int *rescan)
int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
phys_addr_t *basep, phys_size_t *sizep,
- gd_t *gd_ptr)
+ struct bd_info *bd)
{
int addr_cells, size_cells;
const u32 *cell, *end;
@@ -1983,8 +1987,8 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
}
/* Note: if no matching subnode was found we use the parent node */
- if (gd_ptr) {
- memset(gd_ptr->dram, '\0', sizeof(gd_ptr->dram[0]) *
+ if (bd) {
+ memset(bd->bi_dram, '\0', sizeof(bd->bi_dram[0]) *
CONFIG_NR_DRAM_BANKS);
}
@@ -2000,8 +2004,8 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
if (addr_cells == 2)
addr += (u64)fdt32_to_cpu(*cell++) << 32UL;
addr += fdt32_to_cpu(*cell++);
- if (gd_ptr)
- gd_ptr->dram[bank].start = addr;
+ if (bd)
+ bd->bi_dram[bank].start = addr;
if (basep && !bank)
*basep = (phys_addr_t)addr;
@@ -2023,8 +2027,8 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
}
}
- if (gd_ptr)
- gd_ptr->dram[bank].size = size;
+ if (bd)
+ bd->bi_dram[bank].size = size;
total_size += size;
}
diff --git a/lib/hashtable.c b/lib/hashtable.c
index f96a8e686f6..75c263b5053 100644
--- a/lib/hashtable.c
+++ b/lib/hashtable.c
@@ -821,12 +821,13 @@ int himport_r(struct hsearch_data *htab,
}
/* we allocate new space to make sure we can write to the array */
- data = memdup_nul(env, size);
- if (data == NULL) {
- debug("himport_r: can't duplicate env block\n");
+ if ((data = malloc(size + 1)) == NULL) {
+ debug("himport_r: can't malloc %lu bytes\n", (ulong)size + 1);
__set_errno(ENOMEM);
return 0;
}
+ memcpy(data, env, size);
+ data[size] = '\0';
dp = data;
/* make a local copy of the list of variables */
diff --git a/lib/libfdt/Makefile b/lib/libfdt/Makefile
index b4113cfb478..c492377032b 100644
--- a/lib/libfdt/Makefile
+++ b/lib/libfdt/Makefile
@@ -5,7 +5,6 @@
obj-y += \
fdt.o \
- fdt_check.o \
fdt_ro.o \
fdt_wip.o \
fdt_strerror.o \
diff --git a/lib/libfdt/fdt_check.c b/lib/libfdt/fdt_check.c
deleted file mode 100644
index b7fa4a7c0bb..00000000000
--- a/lib/libfdt/fdt_check.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <linux/libfdt_env.h>
-#include "../../scripts/dtc/libfdt/fdt_check.c"
diff --git a/lib/lmb.c b/lib/lmb.c
index 77440a48486..275d105c5aa 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -540,14 +540,13 @@ static void lmb_reserve_uboot_region(void)
ulong pram = 0;
rsv_start = gd->start_addr_sp - CONFIG_STACK_SIZE;
- end = gd->initial_relocaddr;
+ end = gd->ram_top;
/*
* Reserve memory from aligned address below the bottom of U-Boot stack
- * until the original relocation address to prevent LMB from
- * overwriting that memory.
+ * until end of RAM area to prevent LMB from overwriting that memory.
*/
- debug("## Current stack ends at 0x%08lx\n", (ulong)rsv_start);
+ debug("## Current stack ends at 0x%08lx ", (ulong)rsv_start);
#ifdef CFG_PRAM
pram = env_get_ulong("pram", 10, CFG_PRAM);
@@ -555,12 +554,12 @@ static void lmb_reserve_uboot_region(void)
#endif
for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
- if (!gd->dram[bank].size ||
- rsv_start < gd->dram[bank].start)
+ if (!gd->bd->bi_dram[bank].size ||
+ rsv_start < gd->bd->bi_dram[bank].start)
continue;
/* Watch out for RAM at end of address space! */
- bank_end = gd->dram[bank].start +
- gd->dram[bank].size - 1;
+ bank_end = gd->bd->bi_dram[bank].start +
+ gd->bd->bi_dram[bank].size - 1;
if (rsv_start > bank_end)
continue;
if (bank_end > end)
@@ -615,6 +614,7 @@ static void lmb_add_memory(void)
phys_addr_t bank_end;
phys_size_t size;
u64 ram_top = gd->ram_top;
+ struct bd_info *bd = gd->bd;
if (CONFIG_IS_ENABLED(LMB_ARCH_MEM_MAP))
return lmb_arch_add_memory();
@@ -624,22 +624,22 @@ static void lmb_add_memory(void)
ram_top = 0x100000000ULL;
for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
- size = gd->dram[i].size;
+ size = bd->bi_dram[i].size;
if (size) {
- lmb_add(gd->dram[i].start, size);
+ lmb_add(bd->bi_dram[i].start, size);
if (!IS_ENABLED(CONFIG_LMB_LIMIT_DMA_BELOW_RAM_TOP))
continue;
- bank_end = gd->dram[i].start + size;
+ bank_end = bd->bi_dram[i].start + size;
/*
* Reserve memory above ram_top as
* no-overwrite so that it cannot be
* allocated
*/
- if (gd->dram[i].start >= ram_top)
- lmb_reserve(gd->dram[i].start, size,
+ if (bd->bi_dram[i].start >= ram_top)
+ lmb_reserve(bd->bi_dram[i].start, size,
LMB_NOOVERWRITE);
else if (bank_end > ram_top)
lmb_reserve(ram_top, bank_end - ram_top,
diff --git a/lib/rsa/Kconfig b/lib/rsa/Kconfig
index deaad0bba02..12a71c3df6f 100644
--- a/lib/rsa/Kconfig
+++ b/lib/rsa/Kconfig
@@ -94,14 +94,14 @@ config RSA_FREESCALE_EXP
bool "Enable RSA Modular Exponentiation with FSL crypto accelerator"
depends on DM && FSL_CAAM && !ARCH_MX7 && !ARCH_MX7ULP && !ARCH_MX6 && !ARCH_MX5
help
- Enables driver for RSA modular exponentiation using Freescale cryptographic
- accelerator - CAAM.
+ Enables driver for RSA modular exponentiation using Freescale cryptographic
+ accelerator - CAAM.
config RSA_ASPEED_EXP
bool "Enable RSA Modular Exponentiation with ASPEED crypto accelerator"
depends on DM && ASPEED_ACRY
help
- Enables driver for RSA modular exponentiation using ASPEED cryptographic
- accelerator - ACRY
+ Enables driver for RSA modular exponentiation using ASPEED cryptographic
+ accelerator - ACRY
endif
diff --git a/lib/string.c b/lib/string.c
index 37ea8c29561..302efe048b0 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -343,29 +343,41 @@ size_t strcspn(const char *s, const char *reject)
}
#endif
-void *memdup_nul(const void *src, size_t len)
+#ifndef __HAVE_ARCH_STRDUP
+char * strdup(const char *s)
{
- char *dst;
-
- if (len + 1 < len)
- return NULL;
+ char *new;
- dst = malloc(len + 1);
- if (!dst)
+ if ((s == NULL) ||
+ ((new = malloc (strlen(s) + 1)) == NULL) ) {
return NULL;
+ }
- dst[len] = '\0';
- return memcpy(dst, src, len);
-}
-
-char * strdup(const char *s)
-{
- return s ? memdup_nul(s, strlen(s)) : NULL;
+ strcpy (new, s);
+ return new;
}
char * strndup(const char *s, size_t n)
{
- return s ? memdup_nul(s, strnlen(s, n)) : NULL;
+ size_t len;
+ char *new;
+
+ if (s == NULL)
+ return NULL;
+
+ len = strlen(s);
+
+ if (n < len)
+ len = n;
+
+ new = malloc(len + 1);
+ if (new == NULL)
+ return NULL;
+
+ strncpy(new, s, len);
+ new[len] = '\0';
+
+ return new;
}
/**
@@ -398,6 +410,7 @@ void kfree_const(const void *x)
free((void *)x);
}
+#endif
#ifndef __HAVE_ARCH_STRSPN
/**
@@ -685,15 +698,17 @@ void * memscan(void * addr, int c, size_t size)
}
#endif
-void *memdup(const void *src, size_t len)
+char *memdup(const void *src, size_t len)
{
- void *p;
+ char *p;
p = malloc(len);
if (!p)
return NULL;
- return memcpy(p, src, len);
+ memcpy(p, src, len);
+
+ return p;
}
#ifndef __HAVE_ARCH_STRNSTR