mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
sandbox: Add a way to show the sandbox memory-mapping
This is mostly hidden in the background, but it is sometimes useful to look at it. Add a function to allow this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ec6d30649c
commit
5400c4bc05
4 changed files with 52 additions and 0 deletions
|
@ -253,6 +253,19 @@ phys_addr_t map_to_sysmem(const void *ptr)
|
|||
return mentry->tag;
|
||||
}
|
||||
|
||||
void sandbox_map_list(void)
|
||||
{
|
||||
struct sandbox_mapmem_entry *mentry;
|
||||
struct sandbox_state *state = state_get_current();
|
||||
|
||||
printf("Sandbox memory-mapping\n");
|
||||
printf("%8s %16s %6s\n", "Addr", "Mapping", "Refcnt");
|
||||
list_for_each_entry(mentry, &state->mapmem_head, sibling_node) {
|
||||
printf("%8lx %p %6d\n", mentry->tag, mentry->ptr,
|
||||
mentry->refcnt);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long sandbox_read(const void *addr, enum sandboxio_size_t size)
|
||||
{
|
||||
struct sandbox_state *state = state_get_current();
|
||||
|
|
|
@ -8,4 +8,7 @@
|
|||
|
||||
void cpu_sandbox_set_current(const char *name);
|
||||
|
||||
/* show the mapping of sandbox addresses to pointers */
|
||||
void sandbox_map_list(void);
|
||||
|
||||
#endif /* __SANDBOX_CPU_H */
|
||||
|
|
11
cmd/sb.c
11
cmd/sb.c
|
@ -7,6 +7,7 @@
|
|||
#include <command.h>
|
||||
#include <dm.h>
|
||||
#include <spl.h>
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <asm/state.h>
|
||||
|
||||
|
@ -29,6 +30,14 @@ static int do_sb_handoff(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
#endif
|
||||
}
|
||||
|
||||
static int do_sb_map(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char *const argv[])
|
||||
{
|
||||
sandbox_map_list();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int do_sb_state(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char *const argv[])
|
||||
{
|
||||
|
@ -42,8 +51,10 @@ static int do_sb_state(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
|
||||
U_BOOT_LONGHELP(sb,
|
||||
"handoff - Show handoff data received from SPL\n"
|
||||
"sb map - Show mapped memory\n"
|
||||
"sb state - Show sandbox state");
|
||||
|
||||
U_BOOT_CMD_WITH_SUBCMDS(sb, "Sandbox status commands", sb_help_text,
|
||||
U_BOOT_SUBCMD_MKENT(handoff, 1, 1, do_sb_handoff),
|
||||
U_BOOT_SUBCMD_MKENT(map, 1, 1, do_sb_map),
|
||||
U_BOOT_SUBCMD_MKENT(state, 1, 1, do_sb_state));
|
||||
|
|
|
@ -12,6 +12,7 @@ Synopsis
|
|||
::
|
||||
|
||||
sb handoff
|
||||
sb map
|
||||
sb state
|
||||
|
||||
Description
|
||||
|
@ -26,6 +27,24 @@ sb handoff
|
|||
This shows information about any handoff information received from SPL. If
|
||||
U-Boot is started from an SPL build, it shows a valid magic number.
|
||||
|
||||
sb map
|
||||
~~~~~~
|
||||
|
||||
This shows any mappings between sandbox's emulated RAM and the underlying host
|
||||
address-space.
|
||||
|
||||
Fields shown are:
|
||||
|
||||
Addr
|
||||
Address in emulated RAM
|
||||
|
||||
Mapping
|
||||
Equivalent address in the host address-space. While sandbox requests address
|
||||
``0x10000000`` from the OS, this is not always available.
|
||||
|
||||
Refcnt
|
||||
Shows the number of references to this mapping.
|
||||
|
||||
sb state
|
||||
~~~~~~~~
|
||||
|
||||
|
@ -42,6 +61,12 @@ as ``sandbox_spl``::
|
|||
=> sb handoff
|
||||
SPL handoff magic 14f93c7b
|
||||
|
||||
This shows output from the *sb map* subcommand, with a single mapping::
|
||||
|
||||
Sandbox memory-mapping
|
||||
Addr Mapping Refcnt
|
||||
ff000000 000056185b46d6d0 2
|
||||
|
||||
This shows output from the *sb state* subcommand::
|
||||
|
||||
=> sb state
|
||||
|
|
Loading…
Add table
Reference in a new issue