* interp.c (options enum): Add OPTION_INFO_MEMORY.
(display_mem_info): New static variable. (mips_option_handler): Handle OPTION_INFO_MEMORY. (mips_options): Add info-memory and memory-info. (sim_open): After processing the command line and board specification, check display_mem_info. If it is set then call the real handler for the --memory-info command line switch.
This commit is contained in:
parent
2025a643ef
commit
2525df0347
|
@ -1,3 +1,14 @@
|
|||
2007-09-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* interp.c (options enum): Add OPTION_INFO_MEMORY.
|
||||
(display_mem_info): New static variable.
|
||||
(mips_option_handler): Handle OPTION_INFO_MEMORY.
|
||||
(mips_options): Add info-memory and memory-info.
|
||||
(sim_open): After processing the command line and board
|
||||
specification, check display_mem_info. If it is set then
|
||||
call the real handler for the --memory-info command line
|
||||
switch.
|
||||
|
||||
2007-08-24 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* configure.ac: Change license of multi-run.c to GPL version 3.
|
||||
|
|
|
@ -180,9 +180,11 @@ enum {
|
|||
OPTION_DINERO_TRACE = OPTION_START,
|
||||
OPTION_DINERO_FILE,
|
||||
OPTION_FIRMWARE,
|
||||
OPTION_INFO_MEMORY,
|
||||
OPTION_BOARD
|
||||
};
|
||||
|
||||
static int display_mem_info = 0;
|
||||
|
||||
static SIM_RC
|
||||
mips_option_handler (sd, cpu, opt, arg, is_command)
|
||||
|
@ -259,6 +261,10 @@ Re-compile simulator with \"-DTRACE\" to enable this option.\n");
|
|||
}
|
||||
return SIM_RC_OK;
|
||||
}
|
||||
|
||||
case OPTION_INFO_MEMORY:
|
||||
display_mem_info = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return SIM_RC_OK;
|
||||
|
@ -290,6 +296,20 @@ static const OPTION mips_options[] =
|
|||
|
||||
, "Customize simulation for a particular board.", mips_option_handler },
|
||||
|
||||
/* These next two options have the same names as ones found in the
|
||||
memory_options[] array in common/sim-memopt.c. This is because
|
||||
the intention is to provide an alternative handler for those two
|
||||
options. We need an alternative handler because the memory
|
||||
regions are not set up until after the command line arguments
|
||||
have been parsed, and so we cannot display the memory info whilst
|
||||
processing the command line. There is a hack in sim_open to
|
||||
remove these handlers when we want the real --memory-info option
|
||||
to work. */
|
||||
{ { "info-memory", no_argument, NULL, OPTION_INFO_MEMORY },
|
||||
'\0', NULL, "List configured memory regions", mips_option_handler },
|
||||
{ { "memory-info", no_argument, NULL, OPTION_INFO_MEMORY },
|
||||
'\0', NULL, NULL, mips_option_handler },
|
||||
|
||||
{ {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
@ -587,6 +607,31 @@ sim_open (kind, cb, abfd, argv)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (display_mem_info)
|
||||
{
|
||||
struct option_list * ol;
|
||||
struct option_list * prev;
|
||||
|
||||
/* This is a hack. We want to execute the real --memory-info command
|
||||
line switch which is handled in common/sim-memopts.c, not the
|
||||
override we have defined in this file. So we remove the
|
||||
mips_options array from the state options list. This is safe
|
||||
because we have now processed all of the command line. */
|
||||
for (ol = STATE_OPTIONS (sd), prev = NULL;
|
||||
ol != NULL;
|
||||
prev = ol, ol = ol->next)
|
||||
if (ol->options == mips_options)
|
||||
break;
|
||||
|
||||
SIM_ASSERT (ol != NULL);
|
||||
|
||||
if (prev == NULL)
|
||||
STATE_OPTIONS (sd) = ol->next;
|
||||
else
|
||||
prev->next = ol->next;
|
||||
|
||||
sim_do_commandf (sd, "memory-info");
|
||||
}
|
||||
|
||||
/* check for/establish the a reference program image */
|
||||
if (sim_analyze_program (sd,
|
||||
|
|
Loading…
Reference in New Issue