From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FfE42-0001nY-Os for qemu-devel@nongnu.org; Sun, 14 May 2006 06:43:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FfE42-0001nH-50 for qemu-devel@nongnu.org; Sun, 14 May 2006 06:43:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FfE42-0001nD-2L for qemu-devel@nongnu.org; Sun, 14 May 2006 06:43:06 -0400 Received: from [212.227.126.171] (helo=moutng.kundenserver.de) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FfE6C-0003Z6-8I for qemu-devel@nongnu.org; Sun, 14 May 2006 06:45:20 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) by flubber.weilnetz.de (Postfix) with ESMTP id BC591F2C46 for ; Sun, 14 May 2006 12:42:15 +0200 (CEST) Message-ID: <44670987.1030203@mail.berlios.de> Date: Sun, 14 May 2006 12:42:15 +0200 From: Stefan Weil MIME-Version: 1.0 Subject: [Qemu-devel][PATCH]Get machine name from name of executable Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Today, QEMU allows machine selection using command line option -M. Without this option, it will always take the first machine for the given target architecture. With my patch, QEMU first parses the name of the executable. The string after the last '-' is interpreted as machine name. If this machine does not exist, the first machine is taken, so the new QEMU remains compatible with the old behaviour. With this patch, an installation might link e.g. qemu-system-arm to qemu-system-arm-integratorcp926, and running qemu-system-arm-integratorcp926 will automatically select machine integratorcp926. My goal is a MIPS emulation which supports big and little endian mode in the same executable (like the real hardware). qemu-system-mipsel would be a symbolic link to qemu-system-mips and enable little endian mode. I propose another code modification: instead of registration of all machines in vl.c, vl.c might call a target procedure which does this registration. So if MIPS, ARM or other targets add machines, vl.c would not change. Example: vl.c calls qemu_register_mips_machines() which calls qemu_register_machine(&mips_machine). Regards, Stefan --- vl.c 3 May 2006 22:02:44 -0000 1.185 +++ vl.c 12 May 2006 20:19:15 -0000 @@ -4252,7 +4254,7 @@ return 0; } -QEMUMachine *find_machine(const char *name) +static QEMUMachine *find_machine(const char *name) { QEMUMachine *m; @@ -5075,7 +5077,14 @@ mallopt(M_MMAP_THRESHOLD, 4096 * 1024); #endif register_machines(); + machine = 0; + optarg = strrchr(argv[0], '-'); + if (optarg != 0) { + machine = find_machine(optarg + 1); + } + if (!machine) { machine = first_machine; + } initrd_filename = NULL; for(i = 0; i < MAX_FD; i++) fd_filename[i] = NULL;