mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 10:39:08 +00:00
setexpr: Add explicit support for 32- and 64-bit ints
At present this function assumes that a size of 4 refers to a ulong. This
is true on 32-bit machines but not commonly on 64-bit machines.
This means that the 'l' specify does not work correctly with setexpr.
Add an explicit case for 32-bit values so that 64-bit machines can still
use the 'l' specifier. On 32-bit machines, 64-bit is still not supported.
This corrects the operation of the default size (which is 4 for setexpr),
so update the tests accordingly.
The original code for reading from memory was included in 47ab5ad145
("cmd_setexpr: allow memory addresses in expressions") but I am not adding
a Fixes: tag since that code was not written with 64-bit machines in mind.
Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7526deec7e
commit
25a43ac84a
2 changed files with 13 additions and 9 deletions
|
@ -39,6 +39,10 @@ static ulong get_arg(char *s, int w)
|
|||
unmap_sysmem(p);
|
||||
return val;
|
||||
case 4:
|
||||
p = map_sysmem(addr, sizeof(u32));
|
||||
val = *(u32 *)p;
|
||||
unmap_sysmem(p);
|
||||
return val;
|
||||
default:
|
||||
p = map_sysmem(addr, sizeof(ulong));
|
||||
val = *p;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue