From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43902 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLm7D-0004LT-7R for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OLm7B-00039e-72 for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:23 -0400 Received: from e1.ny.us.ibm.com ([32.97.182.141]:37621) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLm7B-00039W-4Q for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:21 -0400 Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id o57NkQpq015279 for ; Mon, 7 Jun 2010 19:46:26 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o57NqKTP123448 for ; Mon, 7 Jun 2010 19:52:20 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o57NqKiO010312 for ; Mon, 7 Jun 2010 20:52:20 -0300 From: Anthony Liguori Date: Mon, 7 Jun 2010 18:51:57 -0500 Message-Id: <1275954730-8196-10-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1275954730-8196-1-git-send-email-aliguori@us.ibm.com> References: <1275954730-8196-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH 09/22] machine: implement -m in terms of -machine List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Glauber Costa , Anthony Liguori Signed-off-by: Anthony Liguori diff --git a/vl.c b/vl.c index 4553648..398d3b4 100644 --- a/vl.c +++ b/vl.c @@ -2968,35 +2968,14 @@ int main(int argc, char **argv, char **envp) version(); exit(0); break; - case QEMU_OPTION_m: { - uint64_t value; - char *ptr; - - value = strtoul(optarg, &ptr, 10); - switch (*ptr) { - case 0: case 'M': case 'm': - value <<= 20; - break; - case 'G': case 'g': - value <<= 30; - break; - default: - fprintf(stderr, "qemu: invalid ram size: %s\n", optarg); - exit(1); - } - - /* On 32-bit hosts, QEMU is limited by virtual address space */ - if (value > (2047 << 20) && HOST_LONG_BITS == 32) { - fprintf(stderr, "qemu: at most 2047 MB RAM can be simulated\n"); - exit(1); - } - if (value != (uint64_t)(ram_addr_t)value) { - fprintf(stderr, "qemu: ram size too large\n"); - exit(1); + case QEMU_OPTION_m: + /* Default to 'M' which is not the normal behavior */ + if (*optarg && isdigit(optarg[strlen(optarg) - 1])) { + qemu_opts_parsef(&qemu_machine_opts, "ram_size=%sM", optarg); + } else { + qemu_opts_parsef(&qemu_machine_opts, "ram_size=%s", optarg); } - ram_size = value; break; - } case QEMU_OPTION_mempath: mem_path = optarg; break; @@ -3645,8 +3624,26 @@ int main(int argc, char **argv, char **envp) exit(1); /* init the memory */ - if (ram_size == 0) - ram_size = DEFAULT_RAM_SIZE * 1024 * 1024; + ram_size = qemu_opt_get_size(machine_opts, "ram_size", + DEFAULT_RAM_SIZE * 1024 * 1024); + + + if (!qemu_opt_get(machine_opts, "ram_size")) { + char buffer[64]; + snprintf(buffer, sizeof(buffer), "%" PRId64, ram_size); + qemu_opt_set(machine_opts, "ram_size", buffer); + } + + /* On 32-bit hosts, QEMU is limited by virtual address space */ + if (ram_size > (2047 << 20) && HOST_LONG_BITS == 32) { + fprintf(stderr, "qemu: at most 2047 MB RAM can be simulated\n"); + exit(1); + } + + if (ram_size != (uint64_t)(ram_addr_t)ram_size) { + fprintf(stderr, "qemu: ram size too large\n"); + exit(1); + } /* init the dynamic translator */ cpu_exec_init_all(tb_size * 1024 * 1024); -- 1.7.0.4