| // SPDX-License-Identifier: GPL-2.0-only | 
 | /* | 
 |  * stdlib functions | 
 |  * | 
 |  * Author: Scott Wood <scottwood@freescale.com> | 
 |  * | 
 |  * Copyright (c) 2007 Freescale Semiconductor, Inc. | 
 |  */ | 
 |  | 
 | #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; | 
 | } |