Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[linux-2.6/sactl.git] / arch / powerpc / boot / stdlib.c
blobe00d58c29eea1fe428fd102ae43b20fbf6614b83
1 /*
2 * stdlib functions
4 * Author: Scott Wood <scottwood@freescale.com>
6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
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.
13 #include "stdlib.h"
15 /* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
16 unsigned long long int strtoull(const char *ptr, char **end, int base)
18 unsigned long long ret = 0;
20 if (base > 36)
21 goto out;
23 while (*ptr) {
24 int digit;
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;
35 ret *= base;
36 ret += digit;
37 ptr++;
40 out:
41 if (end)
42 *end = (char *)ptr;
44 return ret;