From nobody Fri May 3 06:30:48 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151585518087468.91537050643842; Sat, 13 Jan 2018 06:53:00 -0800 (PST) Received: from localhost ([::1]:42640 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaNB5-0003DI-Qv for importer@patchew.org; Sat, 13 Jan 2018 09:52:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47225) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaN7R-0000UJ-9L for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eaN7O-0007KU-6C for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:13 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:60494) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eaN7N-0007Io-RE for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:10 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MSVlI-1eSlrb3WfE-00RVq2; Sat, 13 Jan 2018 15:48:52 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Sat, 13 Jan 2018 15:48:45 +0100 Message-Id: <20180113144847.8403-2-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180113144847.8403-1-laurent@vivier.eu> References: <20180113144847.8403-1-laurent@vivier.eu> X-Provags-ID: V03:K0:mLqEX76g+ctjGZJDslD8JYKRdHdcRnM4pEVC+WwEwi0QKArfhDR S/DpRa65L5ST8mPgnUU1s63qWlNJT/takZeCXEB034Bb+YrTGEY+qtHr0HLGGDPD0qTu9xQ qI12Je9Szs75sNOEGFBSOGqytxJ0Z+hgB58K19GV1qyv8zE5R+W6q8qfIJXds/GFyTK4Ny4 5UpP0niZR1zGXeE0v+0sg== X-UI-Out-Filterresults: notjunk:1;V01:K0:k77uPJwFPXM=:yAfMs12RT/7xOWyoWSFZs3 djtHRkRDcJteYY2EK0gpsVfZRfd5BrFt1CxMAwpW9+GjKd7P2vJ4dAxKukLNKcc5efAQaAl37 20vZkNehy6K4rwfTruTrAXavQqv5T6Q6uZuPJgxgYhLoE4K3GgU3Ba1FVh4JJzcq/K9H5J2NB JtfTlkRdqIRxPC2rF3hdejLQn9qOjlkzq9Ayf1SfQAfHsny8cHEj3EErTrV/puwm/BIi0M67P 9ksLeouIMlu7qN0RMwz1bi/l5TorlK/k0kxjaKC8KR47O/s8LAAMWxd/Fjq6ar+Gc8wfX+Jnu olmUXxSaOQBqG8wmSH1XRl1LIhFXAHJGuhBT9GyGaQ7YQi9y32dHBcUkW0/Fm33EG3Q0ZD3Ia tccETZOrkscQgvez/t0WiTYoeEM9VX6HxGzsPXufltu8Ey0HE+yg6jUchAgVMeiHgpqXjIu0+ yWzG3ffv9jjkv0MdAMuVi5TKmqO9P+rTjOARQOftYiQiKQzKi95bZ4uzKKh2greFD67WC9ohN loyeDWGlZiMd/g1nnemD7oMeYQi6YH6q/nUL0KQdygNj0BgB5yJbP5B49m1TQTx9M+DdWOjPs NoSsknjSJPpIHc68OboQI7trhEJoV4AD2Hui8ql4c3Is7NzCcViP+x3TNlFJVpZ2Rl9969YmG mnSF534FLp0SBxsKHMMP+LX045fliF6ORdXXynz1Ft9PgVAkLzmk0fbtfD27doEjguaiI+FXa UKI31vK8stNgvq9UgZv5QKX4NF3wkanIksDcjQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PATCH 1/3] linux-user: introduce functions to detect CPU type X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , YunQiang Su , Riku Voipio , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Aaron Sierra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: YunQiang Su Move CPU type name selection to a function, and add a function to return ELF e_flags. [lv: splitted the patch and some cleanup in get_elf_eflags()] Signed-off-by: Laurent Vivier --- Notes: YunQiang Su, please add your Signed-off-by that was missing in your original patch. linux-user/elfload.c | 37 +++++++++++++++++++ linux-user/main.c | 101 +++++++++++++++++++++++++++--------------------= ---- linux-user/qemu.h | 1 + 3 files changed, 91 insertions(+), 48 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 20f3d8c2c3..03244f5e97 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2376,6 +2376,43 @@ give_up: g_free(syms); } =20 +int get_elf_eflags(int fd, uint32_t *eflags) +{ + struct elfhdr ehdr; + off_t offset; + int ret; + + /* Read ELF header */ + offset =3D lseek(fd, 0, SEEK_SET); + if (offset =3D=3D (off_t) -1) { + return -1; + } + ret =3D read(fd, &ehdr, sizeof(ehdr)); + if (ret < sizeof(ehdr)) { + return -1; + } + offset =3D lseek(fd, offset, SEEK_SET); + if (offset =3D=3D (off_t) -1) { + return -1; + } + + /* Check ELF signature */ + if (!elf_check_ident(&ehdr)) { + return -1; + } + + /* check header */ + bswap_ehdr(&ehdr); + if (!elf_check_ehdr(&ehdr)) { + return -1; + } + + /* return architecture id */ + *eflags =3D ehdr.e_flags; + + return 0; +} + int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) { struct image_info interp_info; diff --git a/linux-user/main.c b/linux-user/main.c index 450eb3ce65..9ce90ae634 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -4254,6 +4254,49 @@ static int parse_args(int argc, char **argv) return optind; } =20 +static const char *get_cpu_model(int fd) +{ +#if defined(TARGET_I386) +#ifdef TARGET_X86_64 + return "qemu64"; +#else + return "qemu32"; +#endif +#elif defined(TARGET_ARM) + return "any"; +#elif defined(TARGET_UNICORE32) + return "any"; +#elif defined(TARGET_M68K) + return "any"; +#elif defined(TARGET_SPARC) +#ifdef TARGET_SPARC64 + return "TI UltraSparc II"; +#else + return "Fujitsu MB86904"; +#endif +#elif defined(TARGET_MIPS) +#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64) + return "5KEf"; +#else + return "24Kf"; +#endif +#elif defined TARGET_OPENRISC + return "or1200"; +#elif defined(TARGET_PPC) +# ifdef TARGET_PPC64 + return "POWER8"; +# else + return "750"; +# endif +#elif defined TARGET_SH4 + return "sh7785"; +#elif defined TARGET_S390X + return "qemu"; +#else + return "any"; +#endif +} + int main(int argc, char **argv, char **envp) { struct target_pt_regs regs1, *regs =3D ®s1; @@ -4318,46 +4361,17 @@ int main(int argc, char **argv, char **envp) =20 init_qemu_uname_release(); =20 + execfd =3D qemu_getauxval(AT_EXECFD); + if (execfd =3D=3D 0) { + execfd =3D open(filename, O_RDONLY); + if (execfd < 0) { + printf("Error while loading %s: %s\n", filename, strerror(errn= o)); + _exit(EXIT_FAILURE); + } + } + if (cpu_model =3D=3D NULL) { -#if defined(TARGET_I386) -#ifdef TARGET_X86_64 - cpu_model =3D "qemu64"; -#else - cpu_model =3D "qemu32"; -#endif -#elif defined(TARGET_ARM) - cpu_model =3D "any"; -#elif defined(TARGET_UNICORE32) - cpu_model =3D "any"; -#elif defined(TARGET_M68K) - cpu_model =3D "any"; -#elif defined(TARGET_SPARC) -#ifdef TARGET_SPARC64 - cpu_model =3D "TI UltraSparc II"; -#else - cpu_model =3D "Fujitsu MB86904"; -#endif -#elif defined(TARGET_MIPS) -#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64) - cpu_model =3D "5KEf"; -#else - cpu_model =3D "24Kf"; -#endif -#elif defined TARGET_OPENRISC - cpu_model =3D "or1200"; -#elif defined(TARGET_PPC) -# ifdef TARGET_PPC64 - cpu_model =3D "POWER8"; -# else - cpu_model =3D "750"; -# endif -#elif defined TARGET_SH4 - cpu_model =3D "sh7785"; -#elif defined TARGET_S390X - cpu_model =3D "qemu"; -#else - cpu_model =3D "any"; -#endif + cpu_model =3D get_cpu_model(execfd); } tcg_exec_init(0); /* NOTE: we need to init the CPU at this stage to get @@ -4450,15 +4464,6 @@ int main(int argc, char **argv, char **envp) cpu->opaque =3D ts; task_settid(ts); =20 - execfd =3D qemu_getauxval(AT_EXECFD); - if (execfd =3D=3D 0) { - execfd =3D open(filename, O_RDONLY); - if (execfd < 0) { - printf("Error while loading %s: %s\n", filename, strerror(errn= o)); - _exit(EXIT_FAILURE); - } - } - ret =3D loader_exec(execfd, filename, target_argv, target_environ, reg= s, info, &bprm); if (ret !=3D 0) { diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 4edd7d0c08..c2a701163c 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -188,6 +188,7 @@ int loader_exec(int fdexec, const char *filename, char = **argv, char **envp, struct target_pt_regs * regs, struct image_info *infop, struct linux_binprm *); =20 +int get_elf_eflags(int fd, uint32_t *eflags); int load_elf_binary(struct linux_binprm *bprm, struct image_info *info); int load_flt_binary(struct linux_binprm *bprm, struct image_info *info); =20 --=20 2.14.3 From nobody Fri May 3 06:30:48 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515855068651240.15567543472753; Sat, 13 Jan 2018 06:51:08 -0800 (PST) Received: from localhost ([::1]:42504 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaN9H-0001ps-Tc for importer@patchew.org; Sat, 13 Jan 2018 09:51:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaN7N-0000RY-N1 for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eaN7K-0007HH-Lp for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:09 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:53584) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eaN7K-0007GM-CI for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:06 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MBo5j-1ek1tj2clz-00Ao4D; Sat, 13 Jan 2018 15:48:52 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Sat, 13 Jan 2018 15:48:46 +0100 Message-Id: <20180113144847.8403-3-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180113144847.8403-1-laurent@vivier.eu> References: <20180113144847.8403-1-laurent@vivier.eu> X-Provags-ID: V03:K0:o2gtiArl+TjHR8ghH1BI1PfbmtPcGBzsSdATnXK7ltt2l0t6G1j NRH88f4gNlze/OshYYhppIlxyHgfxXLm+lV2DwlAP10U2bvWCwKpRQ6IZqN4MdQGFzTLyMx T5FuZwdkR4xHJZ5yy6Y8KBdK8FuW+kok5dhwrv7joBh8kYHye0DXMyRhwRe7WNpM7MHTdVx kgkIrbYR1deFmzTOz+1cQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:XGuKMoIC9ZE=:DBZm+yXsUizkLh22HP/+Di 67OncD8fn/Cy0CWfHHX1+b20FfNsQosXGUsibPIoI6HBQo8PTKfAlTU/BQyPTf+pR2+RwcHGN ja3ZQFjU3Lgm8SIU7KfB5NjiIB5ElET8Z6pPVaIBfxMj33P3GJ4kPEesfM7LP2pNe207xXR5Z alAl/buI0jBGd36IBB3BFiS7MR1heO3BvpkiYT8zQAcxF9tOJinChfCkks1CXL3gDo3/oFZuK A5Ox+Tuz2U0Nukzbx9q5wcadJSE7VM5Q5WniSkCYGQNuuVA7FXrWtKwTU1cvXIObxPLfaiyvs K/iOW8xfxExZCByS4aCYa+9uQClmpoAA5j1tQwYc/K0OrKVXVXxhfvBUjzeJJQJwCpROm9i/i R4YLaZJDJUrMHqfLHZQEZ1fkg4kgTUTPgsUIHaP3aaKWc0xhRd+XoSuNnKSLmzpOcPMvnmUik wKQ0cb0Qgm8wf5tvsj2HIGY6FWotFYZIOZsFzmHIxGkWBtLVDHs7ZGmJL/0BfhUj4fUpX3ADL 4ZG2zZdW4CtK0nZEfWSoNL42vDHkG8yLGF73woA4ot4tFus19SEDnBY9Y6ZF+rtuSv3GZqRM7 mQSl8+dKDwgqC5kTQQI3DK2Lebj2mgaQlmGTo28UZWmIOg+wRHByABzME9BIkMKlsWkIOjo77 MCKaLf7bLI6MAJs2tVOE8E1BqLgZXzqyVs4y/VX/ZnRRFskT+8xmS0mM50gKv6K2yiwsGLUKO yQzRRVL97BjiLXkQGgbgM3OgG7pWNVbMmH7e5g== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 Subject: [Qemu-devel] [PATCH 2/3] linux-user, m68k: select CPU according to ELF header values X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , YunQiang Su , Riku Voipio , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Aaron Sierra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" M680x0 doesn't support the same set of instructions as ColdFire, so we can't use "any" CPU type to execute m68020 instructions. We select CPU type ("m68020" or "any" for ColdFire) according to the ELF header. If we can't, we use by default the value used until now: "any". Signed-off-by: Laurent Vivier --- linux-user/main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/linux-user/main.c b/linux-user/main.c index 9ce90ae634..2fc2267fd4 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -4267,6 +4267,16 @@ static const char *get_cpu_model(int fd) #elif defined(TARGET_UNICORE32) return "any"; #elif defined(TARGET_M68K) + int ret; + uint32_t eflags; + + ret =3D get_elf_eflags(fd, &eflags); + if (ret =3D=3D 0 && eflags =3D=3D 0) { + /* 680x0 */ + return "m68020"; + } + + /* Coldfire */ return "any"; #elif defined(TARGET_SPARC) #ifdef TARGET_SPARC64 --=20 2.14.3 From nobody Fri May 3 06:30:48 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515855070604627.0203302812465; Sat, 13 Jan 2018 06:51:10 -0800 (PST) Received: from localhost ([::1]:42502 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaN9D-0001mg-PW for importer@patchew.org; Sat, 13 Jan 2018 09:51:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaN7N-0000RW-Ml for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eaN7K-0007H7-LX for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:09 -0500 Received: from mout.kundenserver.de ([212.227.126.130]:65373) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eaN7K-0007GJ-C6 for qemu-devel@nongnu.org; Sat, 13 Jan 2018 09:49:06 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MaoHu-1eG5LL1YJm-00KNkm; Sat, 13 Jan 2018 15:48:53 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Sat, 13 Jan 2018 15:48:47 +0100 Message-Id: <20180113144847.8403-4-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180113144847.8403-1-laurent@vivier.eu> References: <20180113144847.8403-1-laurent@vivier.eu> X-Provags-ID: V03:K0:eRHES0d1f9CqAYjwJmNPylmxZAfvRN7khbpjMln0mqInm3Qr0xq Wxsj6gCwL/BJhMM/i3vhQ19xDZb+Lg+fR5j4OT21eH+J2CVzvkR/ZenKgL1c1W7GNUhWqoL V2vX2Ax8epaZOSVt1OwTFAQSBZiA3Q5wiLVw1OPPmsbvofWZGcfONLXvBDrc+G9RBf6/tHc EtGW/QTmrrtVxSYRtakzA== X-UI-Out-Filterresults: notjunk:1;V01:K0:+1rjJipHA/o=:uR/LJ/YJdgnVn4KhNxrqLy 420lwbValFkrUI7XDA3QzGhLoFO1jQgwVkdmRw0gDTUi9A/jPiUw+8YS4kSE2CBGyGm3CwqaN XD5O6PQ1zHm2MWmYgzq+hG/2Zd4CulEDCcYKBmitYLanBDfzKTDAIexO9fAYo1iNHCtAHEFcj 2pNBLHHsJQQXROp5o6iW7+6BGnhNjGOG3EklJ1NxK11YV4rMXf07pk49Zvu+Jxib85j5gK1K0 l5ocE8+ZSWQmC1t72n+Kpxy0Yz+mQHxQoMTi9uSPNYLVPRWcBhCh43TTMXE2XdRONvb7ydSwI o02xX59oj7y2ZZyUg/4vPKnKaVOXJucsBlGPBMbWdG6v0VuESX+PK9JPFlbeZqiZKBFWYcgUT Ajpxyt72zYuvIMdblsxh9SJwNuZHPl2Fh9jnTEdFkT3xxKb+XYnvX7WxFeAkgJowYaEecVC86 msDCur5G32vT6LC1COrXf8ABj27Xt0bKzx+Q0iFrk+lFWPlW3kjdDcqgFlOBlZMX3yOwHwsZd IWip6LE3JKj74NUBK62PUVjd5QhcURT70z9k7F/ehaFWnIVt5BVuWDARXZJCJ9FdopICf24AW UnKpgDtAxx8AfxeZJkGjygFJFn8Ts3QFY4ABMMDOlK22oo18SsVkP/WzlQnVOlROYc8ALojiJ LZGPjxRHjNKH8Z3DNJekXMuPZ7kPH8TGuZ++QdKyHIAib4u4GPYZYgR0bUfTeSorXqJQMqP/M FxtO+6rVQtVh6x749uWLnqRXgaUv9XDIEy3HiQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.130 Subject: [Qemu-devel] [PATCH 3/3] linux-user: MIPS set cpu to r6 CPU if binary is R6 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , YunQiang Su , Riku Voipio , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Aaron Sierra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: YunQiang Su So here we need to detect the version of binaries and set cpu_model for it. [lv: original patch modified to move code into get_cpu_model()] Signed-off-by: Laurent Vivier --- Notes: YunQiang Su, please add your Signed-off-by that was missing in your original patch. include/elf.h | 4 ++++ linux-user/main.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/elf.h b/include/elf.h index e8a515ce3d..f2104809b1 100644 --- a/include/elf.h +++ b/include/elf.h @@ -40,6 +40,10 @@ typedef int64_t Elf64_Sxword; #define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ #define EF_MIPS_ARCH_32 0x50000000 /* MIPS32 code. */ #define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */ +#define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */ +#define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */ +#define EF_MIPS_ARCH_32R6 0x90000000 /* MIPS32r6 code. */ +#define EF_MIPS_ARCH_64R6 0xa0000000 /* MIPS64r6 code. */ =20 /* The ABI of a file. */ #define EF_MIPS_ABI_O32 0x00001000 /* O32 ABI. */ diff --git a/linux-user/main.c b/linux-user/main.c index 2fc2267fd4..3229ef079e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -4285,9 +4285,19 @@ static const char *get_cpu_model(int fd) return "Fujitsu MB86904"; #endif #elif defined(TARGET_MIPS) + int ret; + uint32_t eflags; + + ret =3D get_elf_eflags(fd, &eflags); #if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64) + if (ret =3D=3D 0 && (eflags & EF_MIPS_ARCH_64R6) !=3D 0) { + return "I6400"; + } return "5KEf"; #else + if (ret =3D=3D 0 && (eflags & EF_MIPS_ARCH_32R6) !=3D 0) { + return "mips32r6-generic"; + } return "24Kf"; #endif #elif defined TARGET_OPENRISC --=20 2.14.3