aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot/stdlib.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2007-09-05 15:21:10 -0400
committerPaul Mackerras <paulus@samba.org>2007-09-13 11:33:23 -0400
commit9de782770b84768e1aa2e6454223ef30768de84e (patch)
tree24067851c7b5315f1b6c0ade463d039ee3e65a61 /arch/powerpc/boot/stdlib.c
parent4674f2f33948432469e52d5bcaeda9904e34fe46 (diff)
[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>
Diffstat (limited to 'arch/powerpc/boot/stdlib.c')
-rw-r--r--arch/powerpc/boot/stdlib.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/powerpc/boot/stdlib.c b/arch/powerpc/boot/stdlib.c
new file mode 100644
index 000000000000..e00d58c29eea
--- /dev/null
+++ b/arch/powerpc/boot/stdlib.c
@@ -0,0 +1,45 @@
1/*
2 * stdlib functions
3 *
4 * Author: Scott Wood <scottwood@freescale.com>
5 *
6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published
10 * by the Free Software Foundation.
11 */
12
13#include "stdlib.h"
14
15/* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
16unsigned long long int strtoull(const char *ptr, char **end, int base)
17{
18 unsigned long long ret = 0;
19
20 if (base > 36)
21 goto out;
22
23 while (*ptr) {
24 int digit;
25
26 if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
27 digit = *ptr - '0';
28 else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
29 digit = *ptr - 'A' + 10;
30 else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
31 digit = *ptr - 'a' + 10;
32 else
33 break;
34
35 ret *= base;
36 ret += digit;
37 ptr++;
38 }
39
40out:
41 if (end)
42 *end = (char *)ptr;
43
44 return ret;
45}