[POWERPC] bootwrapper: Add strtoull()
This will be needed by PlanetCore firmware support. Signed-off-by: Scott Wood <scottwood@freescale.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
4674f2f339
Коммит
9de782770b
|
@ -45,7 +45,7 @@ src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \
|
||||||
ns16550.c serial.c simple_alloc.c div64.S util.S \
|
ns16550.c serial.c simple_alloc.c div64.S util.S \
|
||||||
gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
|
gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
|
||||||
4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
|
4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
|
||||||
cpm-serial.c
|
cpm-serial.c stdlib.c
|
||||||
src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
|
src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
|
||||||
cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
|
cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
|
||||||
ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
|
ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* stdlib functions
|
||||||
|
*
|
||||||
|
* Author: Scott Wood <scottwood@freescale.com>
|
||||||
|
*
|
||||||
|
* Copyright (c) 2007 Freescale Semiconductor, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 as published
|
||||||
|
* by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stdlib.h"
|
||||||
|
|
||||||
|
/* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
|
||||||
|
unsigned long long int strtoull(const char *ptr, char **end, int base)
|
||||||
|
{
|
||||||
|
unsigned long long ret = 0;
|
||||||
|
|
||||||
|
if (base > 36)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
while (*ptr) {
|
||||||
|
int digit;
|
||||||
|
|
||||||
|
if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
|
||||||
|
digit = *ptr - '0';
|
||||||
|
else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
|
||||||
|
digit = *ptr - 'A' + 10;
|
||||||
|
else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
|
||||||
|
digit = *ptr - 'a' + 10;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret *= base;
|
||||||
|
ret += digit;
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
|
if (end)
|
||||||
|
*end = (char *)ptr;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef _PPC_BOOT_STDLIB_H_
|
||||||
|
#define _PPC_BOOT_STDLIB_H_
|
||||||
|
|
||||||
|
unsigned long long int strtoull(const char *ptr, char **end, int base);
|
||||||
|
|
||||||
|
#endif
|
Загрузка…
Ссылка в новой задаче