diff options
author | Nick Clifton <nickc@redhat.com> | 2007-08-10 14:26:33 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2007-08-10 14:26:33 +0000 |
commit | f40f1a01c5b348fa521f058e32f4a275c33c5be3 (patch) | |
tree | a663fa85af969435b7a05a691774ed190ccda2c2 /sim/common/sim-memopt.c | |
parent | ec8cbbf6de9fb719b1985b7373b5a82890712c3e (diff) | |
download | gdb-f40f1a01c5b348fa521f058e32f4a275c33c5be3.zip gdb-f40f1a01c5b348fa521f058e32f4a275c33c5be3.tar.gz gdb-f40f1a01c5b348fa521f058e32f4a275c33c5be3.tar.bz2 |
* sim-memopt.c (memory_options): Mention that the memory-size switch accepts suffixes.
(parse_size): Handle a suffix on the size value.
* sim-options.c (standard_options): Mention that the mem-size switch accepts suffixes.
(standard_option_handler): Handle a suffix on the size value.
Diffstat (limited to 'sim/common/sim-memopt.c')
-rw-r--r-- | sim/common/sim-memopt.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/sim/common/sim-memopt.c b/sim/common/sim-memopt.c index c7591b8..0e73b9f 100644 --- a/sim/common/sim-memopt.c +++ b/sim/common/sim-memopt.c @@ -90,8 +90,8 @@ static const OPTION memory_options[] = memory_option_handler }, { {"memory-size", required_argument, NULL, OPTION_MEMORY_SIZE }, - '\0', "SIZE", "Add memory at address zero", - memory_option_handler }, + '\0', "<size>[in bytes, Kb (k suffix), Mb (m suffix) or Gb (g suffix)]", + "Add memory at address zero", memory_option_handler }, { {"memory-fill", required_argument, NULL, OPTION_MEMORY_FILL }, '\0', "VALUE", "Fill subsequently added memory regions", @@ -286,11 +286,28 @@ parse_size (char *chp, address_word *nr_bytes, unsigned *modulo) { - /* <nr_bytes> [ "%" <modulo> ] */ + /* <nr_bytes>[K|M|G] [ "%" <modulo> ] */ *nr_bytes = strtoul (chp, &chp, 0); - if (*chp == '%') + switch (*chp) { + case '%': *modulo = strtoul (chp + 1, &chp, 0); + break; + case 'g': case 'G': /* Gigabyte suffix. */ + *nr_bytes <<= 10; + /* Fall through. */ + case 'm': case 'M': /* Megabyte suffix. */ + *nr_bytes <<= 10; + /* Fall through. */ + case 'k': case 'K': /* Kilobyte suffix. */ + *nr_bytes <<= 10; + /* Check for a modulo specifier after the suffix. */ + ++ chp; + if (* chp == 'b' || * chp == 'B') + ++ chp; + if (* chp == '%') + *modulo = strtoul (chp + 1, &chp, 0); + break; } return chp; } |