From nobody Thu Apr 25 06:20:48 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1620134364; cv=none; d=zohomail.com; s=zohoarc; b=J9SAny5GmUqYC0+uFuBRghzOm6Q18jfqJXK5eqTjsN+EaZeGa5ET4XpMpkMccjyY3DfyZUd0qFZppKay9tLc0a0oqUiLbA3zncVARf+obFOHSAG3/oH10ihs1YoUMfcBXW+qfMvDP0FrhJ3ygdOv9RFQ2qD8+v4A7K0P33Zx2h8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620134364; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=EQ4rJKJZWEmn9T+G6sK+gQLWiQh9+ozKD3TR6Q9tCbI=; b=Ip67sFb4zb0QIZ9CuR03Pw6SyEzJuUrdXuT3i19V/qeeGl+FOgHRsSobqfp3j7syrkur7OxpG7rRpDSvCwruTZYGn2MrBV/tHq50NrIKPKv0MjX0CDw3EwhHfXS/jLEUN2rEO5eA292fbJa1Kncaqtbrj7Pc4obPRbMtrtoUw54= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162013436442128.544891312371306; Tue, 4 May 2021 06:19:24 -0700 (PDT) Received: from localhost ([::1]:37180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lduxP-0005rm-Iq for importer@patchew.org; Tue, 04 May 2021 09:19:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41252) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lduwY-0004zs-NK for qemu-devel@nongnu.org; Tue, 04 May 2021 09:18:30 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:35943) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lduwQ-0002dy-KS for qemu-devel@nongnu.org; Tue, 04 May 2021 09:18:28 -0400 Received: from quad ([82.142.20.222]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MQMqN-1lqmzL1CTZ-00MMZH; Tue, 04 May 2021 15:18:18 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH] m68k: virt: correctly set the initial PC Date: Tue, 4 May 2021 15:18:16 +0200 Message-Id: <20210504131816.73272-1-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:88GV03e8jN2Gr3Y8wfUkyt+AnADydcN6DqWLLgYBEHdsPZRbS4F /XLv2TQzKb61+yiNRUzcUtEETKiUXf5UGNxAbcBIbJDJ6kz3Ov0rK8Pa3lI4H9DzwgYjYeM 8xnryczvzUp2OM6jameYSUPAEDo8IAiteZmtl5z1buUOec5r1s7dRoWTp4peY6htBwSGrIz cX5gdJ8JHivlsh/9UV1xA== X-UI-Out-Filterresults: notjunk:1;V03:K0:qc71tT/yIuM=:ZD+tVAaTy6zAtEU1mam849 3dTiUiN0fzRO4GIIgW5lPvvxDJUjfB+7hHI07AeFhFxv33vJyPp6jJsmYLiUMzMP2NH8m6ntr /DPhCWvBVA9YibyUxC1G1hzf6tqsMuZcJd+gzAOQ49+o1B4qyrLfpZqXhNIOBDAG14U74HmL7 1FoxjE0NJqWEF7WA41mE5e1RlWUCdamI+OS6NumTqYPFSIck7sUHwLZIsOq+KIIl45XgTPWy/ Ne6ZrSVNhBtbhtTB8K6q7E2cZ3HEXr9WC5yoToJwmIGFIAxNjr9PUW0yqd9jm423sHbPOsxqP 1+HYmoPiv90K4np+a7ukwlUc5wZYQzOhnavaIqHh4x/F0k0LEFt7C4ZjFEmuEi7MSJSqCD59E f6Ecovvur/WYvjKvKtegd6fMRo4oalpcr1uzPDp56DZ0lHpTnVa+vhe+DbMhue352P59qg1al o6SLbdOLusgR07YmW9dYQDzVlXNXz9t6d8beXCnlDufyI5wO/dmLYYInKvJrzYIeHpuiJonBq T6XUlimM51JNOxticLpgtM= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Set initial PC to the entry of the loaded kernel. This fixes kernel reboot with "-kernel" parameter. Signed-off-by: Laurent Vivier --- hw/m68k/virt.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index e9a5d4c69b97..4fb3a7ebf0f2 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -88,14 +88,21 @@ #define VIRT_VIRTIO_MMIO_BASE 0xff010000 /* MMIO: 0xff010000 - 0xff01f= fff */ #define VIRT_VIRTIO_IRQ_BASE PIC_IRQ(2, 1) /* PIC: 2, 3, 4, 5, IRQ: ALL = */ =20 +typedef struct { + M68kCPU *cpu; + hwaddr initial_pc; + hwaddr initial_stack; +} ResetInfo; + static void main_cpu_reset(void *opaque) { - M68kCPU *cpu =3D opaque; + ResetInfo *reset_info =3D opaque; + M68kCPU *cpu =3D reset_info->cpu; CPUState *cs =3D CPU(cpu); =20 cpu_reset(cs); - cpu->env.aregs[7] =3D ldl_phys(cs->as, 0); - cpu->env.pc =3D ldl_phys(cs->as, 4); + cpu->env.aregs[7] =3D reset_info->initial_stack; + cpu->env.pc =3D reset_info->initial_pc; } =20 static void virt_init(MachineState *machine) @@ -116,6 +123,7 @@ static void virt_init(MachineState *machine) SysBusDevice *sysbus; hwaddr io_base; int i; + ResetInfo *reset_info; =20 if (ram_size > 3399672 * KiB) { /* @@ -127,9 +135,13 @@ static void virt_init(MachineState *machine) exit(1); } =20 + reset_info =3D g_malloc0(sizeof(ResetInfo)); + /* init CPUs */ cpu =3D M68K_CPU(cpu_create(machine->cpu_type)); - qemu_register_reset(main_cpu_reset, cpu); + + reset_info->cpu =3D cpu; + qemu_register_reset(main_cpu_reset, reset_info); =20 /* RAM */ memory_region_add_subregion(get_system_memory(), 0, machine->ram); @@ -209,7 +221,7 @@ static void virt_init(MachineState *machine) error_report("could not load kernel '%s'", kernel_filename); exit(1); } - stl_phys(cs->as, 4, elf_entry); /* reset initial PC */ + reset_info->initial_pc =3D elf_entry; parameters_base =3D (high + 1) & ~1; =20 BOOTINFO1(cs->as, parameters_base, BI_MACHTYPE, MACH_VIRT); --=20 2.31.1