Ard Biesheuvel 44e6186eea EmbeddedPkg/FdtLib: incorporate missing overlay support
Commit a099239015eb ("EmbeddedPkg/FdtLib: Update FdtLib to v1.4.5")
updated our FdtLib implementation to a more recent upstream version,
but omitted fdt_overlay.c due to its ambiguous licensing situation.
This has been resolved now, so take the latest upstream version of
the file (which received no other modifications in the mean time)
and add it to FdtLib.

Note that fdt_overlay.c has a dependency on strtoul() which EDK does
not provide natively, so add a private implementation that wraps the
BaseLib routines that do roughly the same.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-02-21 10:53:08 +00:00

39 lines
1.1 KiB
C

#/* @file
# Copyright (c) 2018, Linaro Limited. All rights reserved.
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
#*/
#include <Base.h>
#include <Library/BaseLib.h>
#include <Library/DebugLib.h>
unsigned long strtoul(const char *nptr, char **endptr, int base)
{
RETURN_STATUS Status;
UINTN ReturnValue;
ASSERT (base == 10 || base == 16);
if (base == 10) {
Status = AsciiStrDecimalToUintnS (nptr, endptr, &ReturnValue);
} else if (base == 16) {
Status = AsciiStrHexToUintnS (nptr, endptr, &ReturnValue);
} else {
Status = RETURN_INVALID_PARAMETER;
}
if (RETURN_ERROR (Status)) {
return MAX_UINTN;
}
return ReturnValue;
}