diff options
author | Ilya Smirnov <ismirno@us.ibm.com> | 2018-12-12 11:33:38 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-01-10 14:52:34 -0600 |
commit | 21f75b9e4475b92665e4dd8ca182108dab53045f (patch) | |
tree | 5534008afd3766285c4da672f3082a03d056fb88 /src/lib | |
parent | 1ba78c4580b6067882d62909c2ce2941ad36008d (diff) | |
download | talos-hostboot-21f75b9e4475b92665e4dd8ca182108dab53045f.tar.gz talos-hostboot-21f75b9e4475b92665e4dd8ca182108dab53045f.zip |
SMF: NVRAM Reading and Mem Distribution end-to-end Changes
This commit introduces the changes to read out the SMF secure
memory amount value from NVRAM and to distribute the secure
memory amount based on the value read. strtou64 was copied
from runtime code to convert the value read from NVRAM (as a
string) to uint64_t.
Change-Id: I83e41f0aaff9b4035d20a517cf866f348acedd59
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69728
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/stdlib.C | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/lib/stdlib.C b/src/lib/stdlib.C index a7c694f9d..2688959bd 100644 --- a/src/lib/stdlib.C +++ b/src/lib/stdlib.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2010,2018 */ +/* Contributors Listed Below - COPYRIGHT 2010,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -161,3 +161,41 @@ void* calloc(size_t num, size_t size) return mem; } +uint64_t strtoul(const char *nptr, char **endptr, int base) +{ + uint64_t l_data = 0; + size_t i = 0; + while( nptr[i] != '\0' ) + { + uint64_t l_nib = 0; + switch(nptr[i]) + { + // handle leading '0x' or 'x' + case('x'): case('X'): + l_data = 0; + break; + case('0'): l_nib = 0; break; + case('1'): l_nib = 1; break; + case('2'): l_nib = 2; break; + case('3'): l_nib = 3; break; + case('4'): l_nib = 4; break; + case('5'): l_nib = 5; break; + case('6'): l_nib = 6; break; + case('7'): l_nib = 7; break; + case('8'): l_nib = 8; break; + case('9'): l_nib = 9; break; + case('A'): case('a'): l_nib = 0xA; break; + case('B'): case('b'): l_nib = 0xB; break; + case('C'): case('c'): l_nib = 0xC; break; + case('D'): case('d'): l_nib = 0xD; break; + case('E'): case('e'): l_nib = 0xE; break; + case('F'): case('f'): l_nib = 0xF; break; + default: + return 0ULL; + } + l_data <<= 4; + l_data |= l_nib; + i++; + } + return l_data; +} |