sandbox: Enhance map_to_sysmem() to handle foreign pointers
authorSimon Glass <sjg@chromium.org>
Sat, 15 Sep 2018 06:50:56 +0000 (00:50 -0600)
committerAlexander Graf <agraf@suse.de>
Sun, 23 Sep 2018 19:55:30 +0000 (21:55 +0200)
commit428aa0ca56aef4ca7facb503c4dba2de127c6046
treed55f193ad096b291cf9d848acfae51483803e69c
parentfe938fb0df155d902846ca39ef06cdee8869f165
sandbox: Enhance map_to_sysmem() to handle foreign pointers

At present map_sysmem() maps an address into the sandbox RAM buffer,
return a pointer, while map_to_sysmem() goes the other way.

The mapping is currently just 1:1 since a case was not found where a more
flexible mapping was needed. PCI does have a separate and more complex
mapping, but uses its own mechanism.

However this arrange cannot handle one important case, which is where a
test declares a stack variable and passes a pointer to it into a U-Boot
function which uses map_to_sysmem() to turn it into a address. Since the
pointer is not inside emulated DRAM, this will fail.

Add a mapping feature which can handle any such pointer, mapping it to a
simple tag value which can be passed around in U-Boot as an address.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/sandbox/cpu/cpu.c
arch/sandbox/cpu/state.c
arch/sandbox/include/asm/state.h