From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014691; cv=none; d=zohomail.com; s=zohoarc; b=D0dJ4dGORdIteCjWGS8761We6iyN4TcNA8USdlA3bocVovcZib8Oke1OfQruQlKXOxjPXbG9tqbrj6Mu607aP8+H1bdxvcXJnl0ISm2Q4Ef3f82QeTX49fkrv6R4v0y/4/PwZOZ+Nom6sLIIZzFTJAco/yQMrbUGbQkGunryejM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014691; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Z82zsqgXWelAd1r+HEr9MnrZUa4NYduOYFqbfQ1Oebk=; b=aXRUFwnvuk7LnhDXuECFbHuCP+Oo1X+O7hW36t5Rfuaz1woCEXIULbVh44bw7YL+8iN+X0QKRNnfYCafAhBaQsSiara9gCApJyIkdr8M4+rP9b0rrcCtcubdmnPFVneB6dlIZ7GvMQo5SqMTzkkIbkq9/mfxnHGyK/9dKf/NQkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014691700921.5334690236385; Mon, 14 Dec 2020 22:44:51 -0800 (PST) Received: from localhost ([::1]:58608 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp44o-0004Fu-DO for importer@patchew.org; Tue, 15 Dec 2020 01:44:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49164) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42S-0002Xr-3X for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:27 -0500 Received: from relay1.mymailcheap.com ([144.217.248.102]:46356) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42O-0003y9-1D for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:23 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay1.mymailcheap.com (Postfix) with ESMTPS id AE7E43F157; Tue, 15 Dec 2020 06:42:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id 953752A370; Tue, 15 Dec 2020 01:42:16 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IdZatChOJq2j; Tue, 15 Dec 2020 01:42:15 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:42:15 -0500 (EST) Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) by mail20.mymailcheap.com (Postfix) with ESMTP id AEC0542D0B; Tue, 15 Dec 2020 06:42:13 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id BF57F40026; Tue, 15 Dec 2020 06:42:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014536; bh=BywRbk7fBtvY251r/H3j4PpBjmNOhVX4sj3Z7oRtv3k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DzxiSjhNXhOeFCGOJjnODMgdvDiP0+o0yG6Pog37pjfmhkztJn9k9qw3J9F88jzbh WUujy5HSxoAAxx5iomp0WYLKYF6bg/SaPyvyqya7JJa7XC+H9h9fDogD8Yb4Xq8Rje zy7W+c550cjZaVwp6ENot1mFZLUAIMlW6RNYm148= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="BD8+hgjh"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014531; bh=BywRbk7fBtvY251r/H3j4PpBjmNOhVX4sj3Z7oRtv3k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BD8+hgjhnmIWEMRZbec6uy5iL5Lo6FSFuLaryEI/to80Yv2QvIgIJW0jWs/rl0sVn zDLQ0a+W4unm39Dej39u69q+JSn8iT35vr1JNuGCz/fbnK8AMv+e9J7ceiOLt3oNWc 0tI/HCGXgI4KstjYmbDnnbzcIPyunndwAGhl7smA= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 1/8] hw/mips: Make bootloader addresses unsgined Date: Tue, 15 Dec 2020 14:41:53 +0800 Message-Id: <20201215064200.28751-2-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] X-Rspamd-Queue-Id: AEC0542D0B X-Spam: Yes 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: pass client-ip=144.217.248.102; envelope-from=jiaxun.yang@flygoat.com; helo=relay1.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" Address should be unsigned anyway, otherwise it may carry calculations wrongly. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/fuloong2e.c | 12 ++++++------ hw/mips/malta.c | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 45c596f4fe..fc4d7f21ed 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -107,9 +107,9 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_= buf, int index, va_end(ap); } =20 -static int64_t load_kernel(CPUMIPSState *env) +static uint64_t load_kernel(CPUMIPSState *env) { - int64_t kernel_entry, kernel_high, initrd_size; + uint64_t kernel_entry, kernel_high, initrd_size; int index =3D 0; long kernel_size; ram_addr_t initrd_offset; @@ -118,8 +118,8 @@ static int64_t load_kernel(CPUMIPSState *env) =20 kernel_size =3D load_elf(loaderparams.kernel_filename, NULL, cpu_mips_kseg0_to_phys, NULL, - (uint64_t *)&kernel_entry, NULL, - (uint64_t *)&kernel_high, NULL, + &kernel_entry, NULL, + &kernel_high, NULL, 0, EM_MIPS, 1, 0); if (kernel_size < 0) { error_report("could not load kernel '%s': %s", @@ -180,7 +180,7 @@ static int64_t load_kernel(CPUMIPSState *env) } =20 static void write_bootloader(CPUMIPSState *env, uint8_t *base, - int64_t kernel_addr) + uint64_t kernel_addr) { uint32_t *p; =20 @@ -294,7 +294,7 @@ static void mips_fuloong2e_init(MachineState *machine) MemoryRegion *bios =3D g_new(MemoryRegion, 1); long bios_size; uint8_t *spd_data; - int64_t kernel_entry; + uint64_t kernel_entry; PCIDevice *pci_dev; PCIBus *pci_bus; ISABus *isa_bus; diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 366f4fdfcd..7db009a3e9 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -616,8 +616,8 @@ static void network_init(PCIBus *pci_bus) } } =20 -static void write_bootloader_nanomips(uint8_t *base, int64_t run_addr, - int64_t kernel_entry) +static void write_bootloader_nanomips(uint8_t *base, uint64_t run_addr, + uint64_t kernel_entry) { uint16_t *p; =20 @@ -840,8 +840,8 @@ static void write_bootloader_nanomips(uint8_t *base, in= t64_t run_addr, * a2 - 32-bit address of the environment variables table * a3 - RAM size in bytes */ -static void write_bootloader(uint8_t *base, int64_t run_addr, - int64_t kernel_entry) +static void write_bootloader(uint8_t *base, uint64_t run_addr, + uint64_t kernel_entry) { uint32_t *p; =20 @@ -1003,7 +1003,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *pro= m_buf, int index, const char *string, ...) { va_list ap; - int32_t table_addr; + uint32_t table_addr; =20 if (index >=3D ENVP_NB_ENTRIES) { return; @@ -1014,7 +1014,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *pro= m_buf, int index, return; } =20 - table_addr =3D sizeof(int32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY_= SIZE; + table_addr =3D sizeof(uint32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY= _SIZE; prom_buf[index] =3D tswap32(ENVP_ADDR + table_addr); =20 va_start(ap, string); @@ -1023,9 +1023,9 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *pro= m_buf, int index, } =20 /* Kernel */ -static int64_t load_kernel(void) +static uint64_t load_kernel(void) { - int64_t kernel_entry, kernel_high, initrd_size; + uint64_t kernel_entry, kernel_high, initrd_size; long kernel_size; ram_addr_t initrd_offset; int big_endian; @@ -1042,8 +1042,8 @@ static int64_t load_kernel(void) =20 kernel_size =3D load_elf(loaderparams.kernel_filename, NULL, cpu_mips_kseg0_to_phys, NULL, - (uint64_t *)&kernel_entry, NULL, - (uint64_t *)&kernel_high, NULL, big_endian, EM_= MIPS, + &kernel_entry, NULL, + &kernel_high, NULL, big_endian, EM_MIPS, 1, 0); if (kernel_size < 0) { error_report("could not load kernel '%s': %s", @@ -1234,7 +1234,7 @@ void mips_malta_init(MachineState *machine) MemoryRegion *bios, *bios_copy =3D g_new(MemoryRegion, 1); const size_t smbus_eeprom_size =3D 8 * 256; uint8_t *smbus_eeprom_buf =3D g_malloc0(smbus_eeprom_size); - int64_t kernel_entry, bootloader_run_addr; + uint64_t kernel_entry, bootloader_run_addr; PCIBus *pci_bus; ISABus *isa_bus; qemu_irq cbus_irq, i8259_irq; --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014691; cv=none; d=zohomail.com; s=zohoarc; b=bdW/ZwcgOQvn9XIOxuzsto+6/3wu/iM38p1p24MaiHD/0YRDXU8wIkRxmlIzH7a2TD7ji1WBeEc6PtUhJkzpYRDYSnAKSBj/uDbWX+jHoQLnycLGCafGvwlPyzmX7lzdL+2x//IX0XyPfj95LdgrGkhl7wLw0bZkX63m5Nri+Rc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014691; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zP1M/fWHSF3kzyTtM6xdgBAZd57wLuvh4p/qoOM43Ds=; b=WIqITdKnHIsW08Ph4b7qgOuRPepyIboHgyhXC98dfgC5K+ynFHKAwTFhe8WSLvWf+1fBmHjTkXCGpDedF5MJX3SPKICnZHeJHLo94VIypQBVcb2dZS0SVVM8wShOuUUKJw3nKA71TBo8hm3MSzRW3kD9vweBNdcgrrNfn9QQ27g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014691760278.34028215420676; Mon, 14 Dec 2020 22:44:51 -0800 (PST) Received: from localhost ([::1]:58554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp44o-0004Ed-MG for importer@patchew.org; Tue, 15 Dec 2020 01:44:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49192) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42V-0002Y9-Qq for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:27 -0500 Received: from relay2.mymailcheap.com ([217.182.113.132]:46232) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42R-0003zv-36 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:25 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay2.mymailcheap.com (Postfix) with ESMTPS id 9CDE73EDEC; Tue, 15 Dec 2020 07:42:20 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id E2C3C2A370; Tue, 15 Dec 2020 01:42:19 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lxQ5r_kQkz2X; Tue, 15 Dec 2020 01:42:19 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:42:19 -0500 (EST) Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) by mail20.mymailcheap.com (Postfix) with ESMTP id 4E12040026; Tue, 15 Dec 2020 06:42:18 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 9E19040026; Tue, 15 Dec 2020 06:42:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014539; bh=/OZh+B8vNOrKFyKdQb71OsWGZrCd3gaIXARjV0Oa1bA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vTLVlZPzFcwzBcBt1nFqcZzH082OKhl+EZaypi9BAuHyxW81h+rhgUPKEQ7Tephvt dm6HMVzD3tXJAC5P97+PYwzu6ggxnRAVloxjHxayTkrPmaOZj6K73/ADC7JKw0Jh4K okKvC7/nB/eExRThuc+vB4X3Zzym6/Xxwllt/0Qg= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="EKxuAZXC"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014534; bh=/OZh+B8vNOrKFyKdQb71OsWGZrCd3gaIXARjV0Oa1bA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EKxuAZXCWx8KhalMhELM0uemxUltWwzHEvfV0jIynC8BdNygHbie+2FyRby41iBQi wg+q+KT9/uaZtm1FYmlPZIk5LJ2NIi8hvXTFjwi8eq8aw7zx1bNJUszWVCmrCUxuGV sQMusJU59H06CCBKrnmf1BEDzPAnc6f/qQF2Qzzs= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 2/8] hw/mips/malta: Use address translation helper to calculate bootloader_run_addr Date: Tue, 15 Dec 2020 14:41:54 +0800 Message-Id: <20201215064200.28751-3-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] X-Rspamd-Queue-Id: 4E12040026 X-Spam: Yes 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: pass client-ip=217.182.113.132; envelope-from=jiaxun.yang@flygoat.com; helo=relay2.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" So it will sign extend adresses properly. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/malta.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 7db009a3e9..1fbb8a3220 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1302,9 +1302,9 @@ void mips_malta_init(MachineState *machine) /* For KVM we reserve 1MB of RAM for running bootloader */ if (kvm_enabled()) { ram_low_size -=3D 0x100000; - bootloader_run_addr =3D 0x40000000 + ram_low_size; + bootloader_run_addr =3D cpu_mips_kvm_um_phys_to_kseg0(NULL, ra= m_low_size); } else { - bootloader_run_addr =3D 0xbfc00000; + bootloader_run_addr =3D cpu_mips_phys_to_kseg0(NULL, RESET_ADD= RESS); } =20 /* Write a small bootloader to the flash location. */ --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014697; cv=none; d=zohomail.com; s=zohoarc; b=I7lXJWNjzbphbVLjaxfIRyFZptPfNqcRlRFZxq4f2GIp4Phs8WEWyhO6YSrCQxwJPMbyON6egNId6yXSrtdbfvfH5anvMJhxbfeYD8F9zkfvriuaezgyrBNoRp0Xlylekv0zbxiQpLFF2gsix5wTisNg+ai5fyHYV5EZZetAJg8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014697; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qHpa/Wrd3Ni/n2BeKcQPDm2LU+XvhxNNADhFLzv3Y2Y=; b=cmwxokSItHRE7F3IxV8bIi/IXtz7lvyv3D510Mli0EUhMS+O5glR+NhY/5EszM5dcogEshT3JlU0+17joDaP4PAw+ER2vLFr6cr49vGaaMh5O+PjwiGUeMtDeThEzDy391qLaqir/u0ItEw2REGw+Zz+RJiTnMeNZepDAdjJBxc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014697193817.3056193332587; Mon, 14 Dec 2020 22:44:57 -0800 (PST) Received: from localhost ([::1]:58988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp44t-0004PI-0n for importer@patchew.org; Tue, 15 Dec 2020 01:44:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49236) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42a-0002dc-EN for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:32 -0500 Received: from relay3.mymailcheap.com ([217.182.119.157]:51909) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp42Y-00041t-0K for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:42:32 -0500 Received: from filter2.mymailcheap.com (filter2.mymailcheap.com [91.134.140.82]) by relay3.mymailcheap.com (Postfix) with ESMTPS id 66DE63F1CC; Tue, 15 Dec 2020 07:42:28 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by filter2.mymailcheap.com (Postfix) with ESMTP id 45BB02A510; Tue, 15 Dec 2020 07:42:28 +0100 (CET) Received: from filter2.mymailcheap.com ([127.0.0.1]) by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OrAcvZSG7O0O; Tue, 15 Dec 2020 07:42:27 +0100 (CET) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter2.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 07:42:27 +0100 (CET) Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) by mail20.mymailcheap.com (Postfix) with ESMTP id C6B3840026; Tue, 15 Dec 2020 06:42:26 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 1FF0540026; Tue, 15 Dec 2020 06:42:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014548; bh=y6ctQgUVU5gcTG+wXv4vT3vKt925fZLwcV3fkk1kHxg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JRVwf+PI9DdjysesS7wqh8CGwEgsPC8bGIYhrL0aZe8vVZYgXKQBAHJIeDaU5le/j DF1taDdxAP9N+bw8rl1L5TKRYt0rIjCLG4cfs8al/w2by7noznNojvg2UMBZwpOQ3l s6L/9lJvdqotZs/10lHPEI0VBaOAyfyAIUQPd2As= X-Virus-Scanned: Debian amavisd-new at filter2.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="AfFEY/j7"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014537; bh=y6ctQgUVU5gcTG+wXv4vT3vKt925fZLwcV3fkk1kHxg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AfFEY/j7dwMMfgFulrF801N7zac6hRwL55pczu32muUzoLey0Xgi1evzo46uKSFk2 53Dlu/kgRwYUezmYeeEijJJb/rQLMXjEXZEvIjQVcDIQAEIIzYQNemVjrq9F4Odh/S SAh2exTeoVoVuxK9DTN40HmLvtXoLREzEdxbsySY= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 3/8] hw/mips: Use address translation helper to handle ENVP_ADDR Date: Tue, 15 Dec 2020 14:41:55 +0800 Message-Id: <20201215064200.28751-4-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[213.133.102.83]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] X-Rspamd-Queue-Id: C6B3840026 X-Spam: Yes 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: pass client-ip=217.182.119.157; envelope-from=jiaxun.yang@flygoat.com; helo=relay3.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" It will signed extend vaddr properly. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/fuloong2e.c | 24 +++++++++--------- hw/mips/malta.c | 62 ++++++++++++++++++++++----------------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index fc4d7f21ed..64cd4b98ca 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -49,7 +49,8 @@ =20 #define DEBUG_FULOONG2E_INIT =20 -#define ENVP_ADDR 0x80002000l +#define ENVP_PADDR 0x2000 +#define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) #define ENVP_NB_ENTRIES 16 #define ENVP_ENTRY_SIZE 256 =20 @@ -100,7 +101,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_= buf, int index, } =20 table_addr =3D sizeof(int32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY_= SIZE; - prom_buf[index] =3D tswap32(ENVP_ADDR + table_addr); + prom_buf[index] =3D tswap32(ENVP_VADDR + table_addr); =20 va_start(ap, string); vsnprintf((char *)prom_buf + table_addr, ENVP_ENTRY_SIZE, string, ap); @@ -172,8 +173,7 @@ static uint64_t load_kernel(CPUMIPSState *env) prom_set(prom_buf, index++, "modetty0=3D38400n8r"); prom_set(prom_buf, index++, NULL); =20 - rom_add_blob_fixed("prom", prom_buf, prom_size, - cpu_mips_kseg0_to_phys(NULL, ENVP_ADDR)); + rom_add_blob_fixed("prom", prom_buf, prom_size, ENVP_PADDR); =20 g_free(prom_buf); return kernel_entry; @@ -199,14 +199,14 @@ static void write_bootloader(CPUMIPSState *env, uint8= _t *base, stl_p(p++, 0x3c040000); /* ori a0, a0, 2 */ stl_p(p++, 0x34840002); - /* lui a1, high(ENVP_ADDR) */ - stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff)); - /* ori a1, a0, low(ENVP_ADDR) */ - stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff)); - /* lui a2, high(ENVP_ADDR + 8) */ - stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); - /* ori a2, a2, low(ENVP_ADDR + 8) */ - stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); + /* lui a1, high(ENVP_VADDR) */ + stl_p(p++, 0x3c050000 | ((ENVP_VADDR >> 16) & 0xffff)); + /* ori a1, a0, low(ENVP_VADDR) */ + stl_p(p++, 0x34a50000 | (ENVP_VADDR & 0xffff)); + /* lui a2, high(ENVP_VADDR + 8) */ + stl_p(p++, 0x3c060000 | (((ENVP_VADDR + 8) >> 16) & 0xffff)); + /* ori a2, a2, low(ENVP_VADDR + 8) */ + stl_p(p++, 0x34c60000 | ((ENVP_VADDR + 8) & 0xffff)); /* lui a3, high(env->ram_size) */ stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16)); /* ori a3, a3, low(env->ram_size) */ diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 1fbb8a3220..9afc0b427b 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -62,7 +62,8 @@ #include "hw/mips/cps.h" #include "hw/qdev-clock.h" =20 -#define ENVP_ADDR 0x80002000l +#define ENVP_PADDR 0x2000 +#define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) #define ENVP_NB_ENTRIES 16 #define ENVP_ENTRY_SIZE 256 =20 @@ -656,29 +657,29 @@ static void write_bootloader_nanomips(uint8_t *base, = uint64_t run_addr, /* li a0,2 */ } =20 - stw_p(p++, 0xe3a0 | NM_HI1(ENVP_ADDR - 64)); + stw_p(p++, 0xe3a0 | NM_HI1(ENVP_VADDR - 64)); =20 - stw_p(p++, NM_HI2(ENVP_ADDR - 64)); - /* lui sp,%hi(ENVP_ADDR - 64) */ + stw_p(p++, NM_HI2(ENVP_VADDR - 64)); + /* lui sp,%hi(ENVP_VADDR - 64) */ =20 - stw_p(p++, 0x83bd); stw_p(p++, NM_LO(ENVP_ADDR - 64)); - /* ori sp,sp,%lo(ENVP_ADDR - 64) */ + stw_p(p++, 0x83bd); stw_p(p++, NM_LO(ENVP_VADDR - 64)); + /* ori sp,sp,%lo(ENVP_VADDR - 64) */ =20 - stw_p(p++, 0xe0a0 | NM_HI1(ENVP_ADDR)); + stw_p(p++, 0xe0a0 | NM_HI1(ENVP_VADDR)); =20 - stw_p(p++, NM_HI2(ENVP_ADDR)); - /* lui a1,%hi(ENVP_ADDR) */ + stw_p(p++, NM_HI2(ENVP_VADDR)); + /* lui a1,%hi(ENVP_VADDR) */ =20 - stw_p(p++, 0x80a5); stw_p(p++, NM_LO(ENVP_ADDR)); - /* ori a1,a1,%lo(ENVP_ADDR) */ + stw_p(p++, 0x80a5); stw_p(p++, NM_LO(ENVP_VADDR)); + /* ori a1,a1,%lo(ENVP_VADDR) */ =20 - stw_p(p++, 0xe0c0 | NM_HI1(ENVP_ADDR + 8)); + stw_p(p++, 0xe0c0 | NM_HI1(ENVP_VADDR + 8)); =20 - stw_p(p++, NM_HI2(ENVP_ADDR + 8)); - /* lui a2,%hi(ENVP_ADDR + 8) */ + stw_p(p++, NM_HI2(ENVP_VADDR + 8)); + /* lui a2,%hi(ENVP_VADDR + 8) */ =20 - stw_p(p++, 0x80c6); stw_p(p++, NM_LO(ENVP_ADDR + 8)); - /* ori a2,a2,%lo(ENVP_ADDR + 8) */ + stw_p(p++, 0x80c6); stw_p(p++, NM_LO(ENVP_VADDR + 8)); + /* ori a2,a2,%lo(ENVP_VADDR + 8) */ =20 stw_p(p++, 0xe0e0 | NM_HI1(loaderparams.ram_low_size)); =20 @@ -878,18 +879,18 @@ static void write_bootloader(uint8_t *base, uint64_t = run_addr, stl_p(p++, 0x24040002); /* addiu a0, zero, 2 */ } =20 - /* lui sp, high(ENVP_ADDR) */ - stl_p(p++, 0x3c1d0000 | (((ENVP_ADDR - 64) >> 16) & 0xffff)); - /* ori sp, sp, low(ENVP_ADDR) */ - stl_p(p++, 0x37bd0000 | ((ENVP_ADDR - 64) & 0xffff)); - /* lui a1, high(ENVP_ADDR) */ - stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff)); - /* ori a1, a1, low(ENVP_ADDR) */ - stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff)); - /* lui a2, high(ENVP_ADDR + 8) */ - stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); - /* ori a2, a2, low(ENVP_ADDR + 8) */ - stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); + /* lui sp, high(ENVP_VADDR) */ + stl_p(p++, 0x3c1d0000 | (((ENVP_VADDR - 64) >> 16) & 0xffff)); + /* ori sp, sp, low(ENVP_VADDR) */ + stl_p(p++, 0x37bd0000 | ((ENVP_VADDR - 64) & 0xffff)); + /* lui a1, high(ENVP_VADDR) */ + stl_p(p++, 0x3c050000 | ((ENVP_VADDR >> 16) & 0xffff)); + /* ori a1, a1, low(ENVP_VADDR) */ + stl_p(p++, 0x34a50000 | (ENVP_VADDR & 0xffff)); + /* lui a2, high(ENVP_VADDR + 8) */ + stl_p(p++, 0x3c060000 | (((ENVP_VADDR + 8) >> 16) & 0xffff)); + /* ori a2, a2, low(ENVP_VADDR + 8) */ + stl_p(p++, 0x34c60000 | ((ENVP_VADDR + 8) & 0xffff)); /* lui a3, high(ram_low_size) */ stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16)); /* ori a3, a3, low(ram_low_size) */ @@ -1015,7 +1016,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *pro= m_buf, int index, } =20 table_addr =3D sizeof(uint32_t) * ENVP_NB_ENTRIES + index * ENVP_ENTRY= _SIZE; - prom_buf[index] =3D tswap32(ENVP_ADDR + table_addr); + prom_buf[index] =3D tswap32(ENVP_VADDR + table_addr); =20 va_start(ap, string); vsnprintf((char *)prom_buf + table_addr, ENVP_ENTRY_SIZE, string, ap); @@ -1122,8 +1123,7 @@ static uint64_t load_kernel(void) prom_set(prom_buf, prom_index++, "38400n8r"); prom_set(prom_buf, prom_index++, NULL); =20 - rom_add_blob_fixed("prom", prom_buf, prom_size, - cpu_mips_kseg0_to_phys(NULL, ENVP_ADDR)); + rom_add_blob_fixed("prom", prom_buf, prom_size, ENVP_PADDR); =20 g_free(prom_buf); return kernel_entry; --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014866; cv=none; d=zohomail.com; s=zohoarc; b=OaXkSGi0lAX9QdOVEsyqJUeAlxVLkvABD+13SS2FmOzQZ8gz1OA5cA6/2yYEQRIfoxFy1Zo1e0TFqGt6XqY2i4JIz27Qd9yKxRg2TDAfeCFTbwit8TkdBiGoJtlH3eH6bZBJVvV6xfyGpMnzgqOgnjQEKwI/PglFYyKdkj7E49U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014866; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uh1+sXAFesUyJRSMexPgnSVNNyqBfxgGYIRPHZLl+Bc=; b=KmfDJ+1fM7E5UkvqDJld/y6C2wPf6TyUwKZALNnsgyJUMEtAaZ3rwy4PfjafL961JMqg512K1Uhlzz9hzyTuUNtl2WhDgXA2HnrbIBe1mP7ypyjYvok/UQNpb+EHxAidU1bfa8UfWWBpU7wo4GdouZ+AHg3nbssy0I6OEOkz1CQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014866094640.6659050782166; Mon, 14 Dec 2020 22:47:46 -0800 (PST) Received: from localhost ([::1]:38572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp47c-0007hO-To for importer@patchew.org; Tue, 15 Dec 2020 01:47:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45R-0005ud-3H for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:29 -0500 Received: from relay1.mymailcheap.com ([144.217.248.102]:60562) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45N-0004vZ-Tz for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:27 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay1.mymailcheap.com (Postfix) with ESMTPS id D17853F1C5; Tue, 15 Dec 2020 06:45:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id AC0B62A370; Tue, 15 Dec 2020 01:45:24 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ORFrgsL5FSaH; Tue, 15 Dec 2020 01:45:23 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:45:23 -0500 (EST) Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) by mail20.mymailcheap.com (Postfix) with ESMTP id 8349D41001; Tue, 15 Dec 2020 06:45:22 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 59506403B9; Tue, 15 Dec 2020 06:45:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014724; bh=eGnooaniH90/48CtMlnOSMVavirfnaDqTaKTCdxxx9w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qBY1OW09XMG1qsbAvqgUv5pq2XL9aqkjP3s8bsjOCOac3ot8LdCzPoPLFVci30pXx 0MiMO/HiDTTSxiJV+uohGcINlYVKBIVtQs3hm/FMylsGouVmhJlI8RFQshnVcVrCYR syp+pFMbTIX2r4DskjGeHSGVxXKVC8Klh14XSC24= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="GnaJyb6d"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014717; bh=eGnooaniH90/48CtMlnOSMVavirfnaDqTaKTCdxxx9w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GnaJyb6dI3FWaRBY7MGusQ2FI2sGekLCVt1VAy7ZV3edRZMvAL/QRDa2wn41XdLcb xUWfJd2I0bsUoSVO0MgAScEaOcYnrvoweZQ7lT9Sr9/JP29D/RImrdM2or1YEsThCU 8pg+1ASqz1aaLXaP1waS/ZW1fwYI3LQjyJqNbzGs= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 4/8] hw/mips: Add a bootloader helper Date: Tue, 15 Dec 2020 14:45:04 +0800 Message-Id: <20201215064507.30148-1-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] X-Rspamd-Queue-Id: 8349D41001 X-Spam: Yes 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: pass client-ip=144.217.248.102; envelope-from=jiaxun.yang@flygoat.com; helo=relay1.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" Add a bootloader helper to generate simple bootloaders for kernel. It can help us reduce inline hex hack and also keep MIPS release 6 compatibility easier. Signed-off-by: Jiaxun Yang Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/bootloader.c | 157 +++++++++++++++++++++++++++++++++++ hw/mips/meson.build | 2 +- include/hw/mips/bootloader.h | 48 +++++++++++ 3 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 hw/mips/bootloader.c create mode 100644 include/hw/mips/bootloader.h diff --git a/hw/mips/bootloader.c b/hw/mips/bootloader.c new file mode 100644 index 0000000000..97916ffd24 --- /dev/null +++ b/hw/mips/bootloader.c @@ -0,0 +1,157 @@ +/* + * Utility for QEMU MIPS to generate it's simple bootloader + * + * Instructions used here are carefully selected to keep compatibility with + * MIPS Release 6. + * + * Copyright (C) 2020 Jiaxun Yang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/bitops.h" +#include "cpu.h" +#include "hw/mips/bootloader.h" + +/* Base types */ +static void bl_gen_nop(uint32_t **p) +{ + stl_p(*p, 0); + *p =3D *p + 1; +} + +static void bl_gen_r_type(uint32_t **p, uint8_t opcode, bl_reg rs, bl_reg = rt, + bl_reg rd, uint8_t shift, uint8_t funct) +{ + uint32_t insn =3D 0; + + insn =3D deposit32(insn, 26, 6, opcode); + insn =3D deposit32(insn, 21, 5, rs); + insn =3D deposit32(insn, 16, 5, rt); + insn =3D deposit32(insn, 11, 5, rd); + insn =3D deposit32(insn, 6, 5, shift); + insn =3D deposit32(insn, 0, 6, funct); + + stl_p(*p, insn); + *p =3D *p + 1; +} + +static void bl_gen_i_type(uint32_t **p, uint8_t opcode, bl_reg rs, bl_reg = rt, + uint16_t imm) +{ + uint32_t insn =3D 0; + + insn =3D deposit32(insn, 26, 6, opcode); + insn =3D deposit32(insn, 21, 5, rs); + insn =3D deposit32(insn, 16, 5, rt); + insn =3D deposit32(insn, 0, 16, imm); + + stl_p(*p, insn); + *p =3D *p + 1; +} + +static bool bootcpu_supports_isa(uint64_t isa_mask) +{ + return cpu_supports_isa(&MIPS_CPU(first_cpu)->env, isa_mask); +} + +/* Single instructions */ +static void bl_gen_dsll(uint32_t **p, bl_reg rd, bl_reg rt, uint8_t sa) +{ + if (bootcpu_supports_isa(ISA_MIPS3)) { + bl_gen_r_type(p, 0, 0, rt, rd, sa, 0x38); + } else { + g_assert_not_reached(); /* unsupported */ + } +} + +static void bl_gen_jalr(uint32_t **p, bl_reg rs) +{ + bl_gen_r_type(p, 0, rs, 0, BL_REG_RA, 0, 0x9); +} + +static void bl_gen_lui(uint32_t **p, bl_reg rt, uint16_t imm) +{ + /* R6: It's a alias of AUI with RS =3D 0 */ + bl_gen_i_type(p, 0xf, 0, rt, imm); +} + +static void bl_gen_ori(uint32_t **p, bl_reg rt, bl_reg rs, uint16_t imm) +{ + bl_gen_i_type(p, 0xd, rs, rt, imm); +} + +static void bl_gen_sw(uint32_t **p, bl_reg rt, uint8_t base, uint16_t offs= et) +{ + bl_gen_i_type(p, 0x2b, base, rt, offset); +} + +static void bl_gen_sd(uint32_t **p, bl_reg rt, uint8_t base, uint16_t offs= et) +{ + if (bootcpu_supports_isa(ISA_MIPS3)) { + bl_gen_i_type(p, 0x3f, base, rt, offset); + } else { + g_assert_not_reached(); /* unsupported */ + } +} + +/* Pseudo instructions */ +static void bl_gen_li(uint32_t **p, bl_reg rt, uint32_t imm) +{ + bl_gen_lui(p, rt, extract32(imm, 16, 16)); + bl_gen_ori(p, rt, rt, extract32(imm, 0, 16)); +} + +static void bl_gen_dli(uint32_t **p, bl_reg rt, uint64_t imm) +{ + bl_gen_li(p, rt, extract64(imm, 32, 32)); + bl_gen_dsll(p, rt, rt, 16); + bl_gen_ori(p, rt, rt, extract64(imm, 16, 16)); + bl_gen_dsll(p, rt, rt, 16); + bl_gen_ori(p, rt, rt, extract64(imm, 0, 16)); +} + +static void bl_gen_load_ulong(uint32_t **p, bl_reg rt, target_ulong imm) +{ + if (bootcpu_supports_isa(ISA_MIPS3)) { + bl_gen_dli(p, rt, imm); /* 64bit */ + } else { + bl_gen_li(p, rt, imm); /* 32bit */ + } +} + +/* Helpers */ +void bl_gen_jump_to(uint32_t **p, target_ulong jump_addr) +{ + bl_gen_load_ulong(p, BL_REG_T9, jump_addr); + bl_gen_jalr(p, BL_REG_T9); + bl_gen_nop(p); /* delay slot */ +} + +void bl_gen_jump_kernel(uint32_t **p, target_ulong sp, target_ulong a0, + target_ulong a1, target_ulong a2, target_ulong a3, + target_ulong kernel_addr) +{ + bl_gen_load_ulong(p, BL_REG_SP, sp); + bl_gen_load_ulong(p, BL_REG_A0, a0); + bl_gen_load_ulong(p, BL_REG_A1, a1); + bl_gen_load_ulong(p, BL_REG_A2, a2); + bl_gen_load_ulong(p, BL_REG_A3, a3); + + bl_gen_jump_to(p, kernel_addr); +} + +void bl_gen_write_u32(uint32_t **p, uint32_t val, target_ulong addr) +{ + bl_gen_li(p, BL_REG_K0, val); + bl_gen_load_ulong(p, BL_REG_K1, addr); + bl_gen_sw(p, BL_REG_K0, BL_REG_K1, 0x0); +} + +void bl_gen_write_u64(uint32_t **p, uint64_t val, target_ulong addr) +{ + bl_gen_dli(p, BL_REG_K0, val); + bl_gen_load_ulong(p, BL_REG_K1, addr); + bl_gen_sd(p, BL_REG_K0, BL_REG_K1, 0x0); +} diff --git a/hw/mips/meson.build b/hw/mips/meson.build index 77b4d8f365..fdb783ff55 100644 --- a/hw/mips/meson.build +++ b/hw/mips/meson.build @@ -1,5 +1,5 @@ mips_ss =3D ss.source_set() -mips_ss.add(files('mips_int.c')) +mips_ss.add(files('bootloader.c', 'mips_int.c')) mips_ss.add(when: 'CONFIG_FULOONG', if_true: files('fuloong2e.c')) mips_ss.add(when: 'CONFIG_JAZZ', if_true: files('jazz.c')) mips_ss.add(when: 'CONFIG_MALTA', if_true: files('gt64xxx_pci.c', 'malta.c= ')) diff --git a/include/hw/mips/bootloader.h b/include/hw/mips/bootloader.h new file mode 100644 index 0000000000..96c7333b9e --- /dev/null +++ b/include/hw/mips/bootloader.h @@ -0,0 +1,48 @@ +#ifndef HW_MIPS_BOOTLOADER_H +#define HW_MIPS_BOOTLOADER_H + +#include "exec/cpu-defs.h" + +void bl_gen_jump_to(uint32_t **p, target_ulong jump_addr); +void bl_gen_jump_kernel(uint32_t **p, target_ulong sp, target_ulong a0, + target_ulong a1, target_ulong a2, target_ulong a3, + target_ulong kernel_addr); +void bl_gen_write_u32(uint32_t **p, uint32_t val, target_ulong addr); +void bl_gen_write_u64(uint32_t **p, uint64_t val, target_ulong addr); + +typedef enum bl_reg { + BL_REG_ZERO =3D 0, + BL_REG_AT =3D 1, + BL_REG_V0 =3D 2, + BL_REG_V1 =3D 3, + BL_REG_A0 =3D 4, + BL_REG_A1 =3D 5, + BL_REG_A2 =3D 6, + BL_REG_A3 =3D 7, + BL_REG_T0 =3D 8, + BL_REG_T1 =3D 9, + BL_REG_T2 =3D 10, + BL_REG_T3 =3D 11, + BL_REG_T4 =3D 12, + BL_REG_T5 =3D 13, + BL_REG_T6 =3D 14, + BL_REG_T7 =3D 15, + BL_REG_S0 =3D 16, + BL_REG_S1 =3D 17, + BL_REG_S2 =3D 18, + BL_REG_S3 =3D 19, + BL_REG_S4 =3D 20, + BL_REG_S5 =3D 21, + BL_REG_S6 =3D 22, + BL_REG_S7 =3D 23, + BL_REG_T8 =3D 24, + BL_REG_T9 =3D 25, + BL_REG_K0 =3D 26, + BL_REG_K1 =3D 27, + BL_REG_GP =3D 28, + BL_REG_SP =3D 29, + BL_REG_FP =3D 30, + BL_REG_RA =3D 31, +} bl_reg; + +#endif --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608015071; cv=none; d=zohomail.com; s=zohoarc; b=H5js7eV66PJ+e2gqucE8Pj45mbReMtR3egjvsWOj2LGv3W9MZxdX6XbR9AsNxDW81GSqpEFveeFGCt5YmJ2wmDd8vFACTRnNU86ZxjNn3ipZVBT1tDb+nwsERwe3lRk4Ob2uFchyr32UJZ/CGHb203xSHToFCyjjMwdE6SH6rqU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608015071; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d2tzmO07TiDp73s42lh+arRWhCyIiuMkYoXAQl3i8iI=; b=O32KcnWMVALiBAnIT7QMN6F/lxfYgOYbMGnpPepXj0XNhik+bzLsAyuiryj+Js7Ii5Z2DWBXJTaXC1hJx9C00UBDHFTm5NP74YqMtEvkXlDrOz5vg/jzvcZm7Z8dGaXDz2lkBOUitSHi5lgvDnj3QEf4m82GI0Ai20e4g/cuFks= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608015071420762.606952322975; Mon, 14 Dec 2020 22:51:11 -0800 (PST) Received: from localhost ([::1]:47770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp4Aw-000375-6x for importer@patchew.org; Tue, 15 Dec 2020 01:51:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45W-00061X-RO for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:34 -0500 Received: from relay4.mymailcheap.com ([137.74.80.156]:57538) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45T-0004xF-UN for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:33 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay4.mymailcheap.com (Postfix) with ESMTPS id 14B533F162; Tue, 15 Dec 2020 07:45:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id 3DFEA2A370; Tue, 15 Dec 2020 01:45:29 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FlHyo6nfe-CN; Tue, 15 Dec 2020 01:45:28 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:45:28 -0500 (EST) Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) by mail20.mymailcheap.com (Postfix) with ESMTP id 3BDFD403B9; Tue, 15 Dec 2020 06:45:27 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 22903403B9; Tue, 15 Dec 2020 06:45:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014729; bh=Tr8W+sLtPkU5Ifn7lYtOpahhe6uDBWHqDIhHMMwE6us=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uWocI9pOtuN7qo9iPoCXL5sFzb2EOScp7Q36OacXXSJkWQ0maytg1UCPsnlo/lkHl NKmiF2iQMj8MCQUSJ3zHzzisi3isw2DFPxxz3EIQVZKTwkrHU5blbU3lvaMtp0wHnO ET21+pev84BMyw0KqqL+tNcVskc9NUaCVZjoNpTU= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="kvHZSy5O"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014720; bh=Tr8W+sLtPkU5Ifn7lYtOpahhe6uDBWHqDIhHMMwE6us=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kvHZSy5OHSLIaQPvLQbCeUpaItMzB/YSzDPolL23f+jDoA85YV/R0AisEOifBV6ha k/9T1Qmaeo3868oYF2FptN9SM/gjOU+APLIIyvvAUMumKxzjsWwuFiGwV/42oSeIHW XjYiXSoFfz2RHoN/rD99tN9tmwuN8oYNu+zGt7Dk= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 5/8] hw/mips: Use bl_gen_kernel_jump to generate bootloaders Date: Tue, 15 Dec 2020 14:45:05 +0800 Message-Id: <20201215064507.30148-2-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] X-Rspamd-Queue-Id: 3BDFD403B9 X-Spam: Yes 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: pass client-ip=137.74.80.156; envelope-from=jiaxun.yang@flygoat.com; helo=relay4.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" Replace embedded binary with generated code. Signed-off-by: Jiaxun Yang Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/boston.c | 17 ++--------------- hw/mips/fuloong2e.c | 28 ++++------------------------ hw/mips/malta.c | 41 ++++++++++------------------------------- 3 files changed, 16 insertions(+), 70 deletions(-) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index c3b94c68e1..b622222c7d 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -27,6 +27,7 @@ #include "hw/ide/ahci.h" #include "hw/loader.h" #include "hw/loader-fit.h" +#include "hw/mips/bootloader.h" #include "hw/mips/cps.h" #include "hw/pci-host/xilinx-pcie.h" #include "hw/qdev-clock.h" @@ -324,21 +325,7 @@ static void gen_firmware(uint32_t *p, hwaddr kernel_en= try, hwaddr fdt_addr, * a2/$6 =3D 0 * a3/$7 =3D 0 */ - stl_p(p++, 0x2404fffe); /* li $4, -2 */ - /* lui $5, hi(fdt_addr) */ - stl_p(p++, 0x3c050000 | ((fdt_addr >> 16) & 0xffff)); - if (fdt_addr & 0xffff) { /* ori $5, lo(fdt_addr) */ - stl_p(p++, 0x34a50000 | (fdt_addr & 0xffff)); - } - stl_p(p++, 0x34060000); /* li $6, 0 */ - stl_p(p++, 0x34070000); /* li $7, 0 */ - - /* Load kernel entry address & jump to it */ - /* lui $25, hi(kernel_ent= ry) */ - stl_p(p++, 0x3c190000 | ((kernel_entry >> 16) & 0xffff)); - /* ori $25, lo(kernel_ent= ry) */ - stl_p(p++, 0x37390000 | (kernel_entry & 0xffff)); - stl_p(p++, 0x03200009); /* jr $25 */ + bl_gen_jump_kernel(&p, 0, (int32_t)-2, fdt_addr, 0, 0, kernel_entry); } =20 static const void *boston_fdt_filter(void *opaque, const void *fdt_orig, diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 64cd4b98ca..9b0eb8a314 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -33,6 +33,7 @@ #include "hw/i2c/smbus_eeprom.h" #include "hw/block/flash.h" #include "hw/mips/mips.h" +#include "hw/mips/bootloader.h" #include "hw/mips/cpudevs.h" #include "hw/pci/pci.h" #include "qemu/log.h" @@ -195,30 +196,9 @@ static void write_bootloader(CPUMIPSState *env, uint8_= t *base, /* Second part of the bootloader */ p =3D (uint32_t *)(base + 0x040); =20 - /* lui a0, 0 */ - stl_p(p++, 0x3c040000); - /* ori a0, a0, 2 */ - stl_p(p++, 0x34840002); - /* lui a1, high(ENVP_VADDR) */ - stl_p(p++, 0x3c050000 | ((ENVP_VADDR >> 16) & 0xffff)); - /* ori a1, a0, low(ENVP_VADDR) */ - stl_p(p++, 0x34a50000 | (ENVP_VADDR & 0xffff)); - /* lui a2, high(ENVP_VADDR + 8) */ - stl_p(p++, 0x3c060000 | (((ENVP_VADDR + 8) >> 16) & 0xffff)); - /* ori a2, a2, low(ENVP_VADDR + 8) */ - stl_p(p++, 0x34c60000 | ((ENVP_VADDR + 8) & 0xffff)); - /* lui a3, high(env->ram_size) */ - stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16)); - /* ori a3, a3, low(env->ram_size) */ - stl_p(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff)); - /* lui ra, high(kernel_addr) */ - stl_p(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff)); - /* ori ra, ra, low(kernel_addr) */ - stl_p(p++, 0x37ff0000 | (kernel_addr & 0xffff)); - /* jr ra */ - stl_p(p++, 0x03e00008); - /* nop */ - stl_p(p++, 0x00000000); + bl_gen_jump_kernel(&p, ENVP_VADDR - 64, 2, ENVP_VADDR, + ENVP_VADDR + 8, loaderparams.ram_size, + kernel_addr); } =20 static void main_cpu_reset(void *opaque) diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 9afc0b427b..ffd67b8293 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -37,6 +37,7 @@ #include "hw/i2c/smbus_eeprom.h" #include "hw/block/flash.h" #include "hw/mips/mips.h" +#include "hw/mips/bootloader.h" #include "hw/mips/cpudevs.h" #include "hw/pci/pci.h" #include "sysemu/sysemu.h" @@ -844,6 +845,7 @@ static void write_bootloader_nanomips(uint8_t *base, ui= nt64_t run_addr, static void write_bootloader(uint8_t *base, uint64_t run_addr, uint64_t kernel_entry) { + target_ulong a0; uint32_t *p; =20 /* Small bootloader */ @@ -872,30 +874,6 @@ static void write_bootloader(uint8_t *base, uint64_t r= un_addr, /* Second part of the bootloader */ p =3D (uint32_t *) (base + 0x580); =20 - if (semihosting_get_argc()) { - /* Preserve a0 content as arguments have been passed */ - stl_p(p++, 0x00000000); /* nop */ - } else { - stl_p(p++, 0x24040002); /* addiu a0, zero, 2 */ - } - - /* lui sp, high(ENVP_VADDR) */ - stl_p(p++, 0x3c1d0000 | (((ENVP_VADDR - 64) >> 16) & 0xffff)); - /* ori sp, sp, low(ENVP_VADDR) */ - stl_p(p++, 0x37bd0000 | ((ENVP_VADDR - 64) & 0xffff)); - /* lui a1, high(ENVP_VADDR) */ - stl_p(p++, 0x3c050000 | ((ENVP_VADDR >> 16) & 0xffff)); - /* ori a1, a1, low(ENVP_VADDR) */ - stl_p(p++, 0x34a50000 | (ENVP_VADDR & 0xffff)); - /* lui a2, high(ENVP_VADDR + 8) */ - stl_p(p++, 0x3c060000 | (((ENVP_VADDR + 8) >> 16) & 0xffff)); - /* ori a2, a2, low(ENVP_VADDR + 8) */ - stl_p(p++, 0x34c60000 | ((ENVP_VADDR + 8) & 0xffff)); - /* lui a3, high(ram_low_size) */ - stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16)); - /* ori a3, a3, low(ram_low_size) */ - stl_p(p++, 0x34e70000 | (loaderparams.ram_low_size & 0xffff)); - /* Load BAR registers as done by YAMON */ stl_p(p++, 0x3c09b400); /* lui t1, 0xb400 */ =20 @@ -947,13 +925,14 @@ static void write_bootloader(uint8_t *base, uint64_t = run_addr, #endif stl_p(p++, 0xad280088); /* sw t0, 0x0088(t1) */ =20 - /* Jump to kernel code */ - stl_p(p++, 0x3c1f0000 | - ((kernel_entry >> 16) & 0xffff)); /* lui ra, high(kernel_entry)= */ - stl_p(p++, 0x37ff0000 | - (kernel_entry & 0xffff)); /* ori ra, ra, low(kernel_ent= ry) */ - stl_p(p++, 0x03e00009); /* jalr ra */ - stl_p(p++, 0x00000000); /* nop */ + if (semihosting_get_argc()) { + a0 =3D 0; + } else { + a0 =3D 2; + } + bl_gen_jump_kernel(&p, ENVP_VADDR - 64, a0, ENVP_VADDR, + ENVP_VADDR + 8, loaderparams.ram_low_size, + kernel_entry); =20 /* YAMON subroutines */ p =3D (uint32_t *) (base + 0x800); --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014994; cv=none; d=zohomail.com; s=zohoarc; b=mUo/Uw1Qn+jx76KjYdOGfvj6sLXxx1H9bDqbng2VG9aAW4oAo0KWn6wnLApO4i4NZ8FW1xwwQmRXXPenbp0/30n5F5/a6aOOjwxD5tv5+71JlBaY9q8Sg+ILi/CHfKze5u7QSG+xXDMV67qLruQXkeKKLLpX23umPi9IvcW2jzQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014994; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=arF1NzgPDxlKfXOH4AEQW4s47h7xRq9dwGGkRTOJwrQ=; b=IhW+9bu8Azuhz7ZyW1BWO2aZ8q52aR6moA1awSzf0XEiuAvR+eyVBSpdG9duUj8VzLLxLcOb11u/FILM7yuqAaNV+aYB2ulj+oV1cxrVBtVqUOHveZEyktFH8RGf65iq23To94Wz62W9llm7NLq8xrAWADCzahTrnUAzqG1/bWs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014994578225.03727422071177; Mon, 14 Dec 2020 22:49:54 -0800 (PST) Received: from localhost ([::1]:45622 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp49h-000296-Av for importer@patchew.org; Tue, 15 Dec 2020 01:49:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49564) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45W-00061W-SZ for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:34 -0500 Received: from relay4.mymailcheap.com ([137.74.80.156]:56111) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45T-0004xG-Tb for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:33 -0500 Received: from filter2.mymailcheap.com (filter2.mymailcheap.com [91.134.140.82]) by relay4.mymailcheap.com (Postfix) with ESMTPS id A657D3F20A; Tue, 15 Dec 2020 07:45:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by filter2.mymailcheap.com (Postfix) with ESMTP id 759D32A7C5; Tue, 15 Dec 2020 07:45:30 +0100 (CET) Received: from filter2.mymailcheap.com ([127.0.0.1]) by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qU9TWtW2L03c; Tue, 15 Dec 2020 07:45:29 +0100 (CET) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter2.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 07:45:29 +0100 (CET) Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) by mail20.mymailcheap.com (Postfix) with ESMTP id 1E77941001; Tue, 15 Dec 2020 06:45:29 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 1AC46403B9; Tue, 15 Dec 2020 06:45:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014730; bh=CNQZUp/uUP92ip3oJH4DOwjwgvT3AQbjqIxo+Z3m7Bs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RcoR6ZcJuswxn422Hn7rMDAB4ijqXpCAmBLw3sStJbPFMsIalUk3XsjKxNbQU8xj8 N2nN+4At1nwVFPbjA++Uv38I60401MuxHPmaxYQ7B7t9mzcxhWIc8hWjRmPlMRR9P/ Xur+eL4UOrnfod+3zO6zRp8KWJaPVMfdwv1nb2GE= X-Virus-Scanned: Debian amavisd-new at filter2.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="Pga2ORzW"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014723; bh=CNQZUp/uUP92ip3oJH4DOwjwgvT3AQbjqIxo+Z3m7Bs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Pga2ORzWyib1cQchDMCyRQvKI7j4KXoVOgdMer56+wTaN4W9dyGqSWAD4vZlpBBek w2y4Ctk0KZiyxaUNATE6gAGcXZvgPkFZi+IixTUL32oJvxzCWiVeP+mkpaMY8CoPyd J/eZXwwe2JA0bjJ3YIbNhgsWZGM0KM/fztg835s0= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 6/8] target/mips/addr: Add translation helpers for KSEG1 Date: Tue, 15 Dec 2020 14:45:06 +0800 Message-Id: <20201215064507.30148-3-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[213.133.102.83]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] X-Rspamd-Queue-Id: 1E77941001 X-Spam: Yes 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: pass client-ip=137.74.80.156; envelope-from=jiaxun.yang@flygoat.com; helo=relay4.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" It's useful for bootloader to do IO opreations. Signed-off-by: Jiaxun Yang Reviewed-by: Huacai Chen Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/addr.c | 10 ++++++++++ target/mips/cpu.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/target/mips/addr.c b/target/mips/addr.c index 27a6036c45..86f1c129c9 100644 --- a/target/mips/addr.c +++ b/target/mips/addr.c @@ -40,6 +40,16 @@ uint64_t cpu_mips_kvm_um_phys_to_kseg0(void *opaque, uin= t64_t addr) return addr | 0x40000000ll; } =20 +uint64_t cpu_mips_kseg1_to_phys(void *opaque, uint64_t addr) +{ + return addr & 0x1fffffffll; +} + +uint64_t cpu_mips_phys_to_kseg1(void *opaque, uint64_t addr) +{ + return (addr & 0x1fffffffll) | 0xffffffffa0000000ll; +} + bool mips_um_ksegs_enabled(void) { return mips_um_ksegs; diff --git a/target/mips/cpu.h b/target/mips/cpu.h index 3ac21d0e9c..0bb1218a57 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -1303,6 +1303,8 @@ uint64_t cpu_mips_kseg0_to_phys(void *opaque, uint64_= t addr); uint64_t cpu_mips_phys_to_kseg0(void *opaque, uint64_t addr); =20 uint64_t cpu_mips_kvm_um_phys_to_kseg0(void *opaque, uint64_t addr); +uint64_t cpu_mips_kseg1_to_phys(void *opaque, uint64_t addr); +uint64_t cpu_mips_phys_to_kseg1(void *opaque, uint64_t addr); bool mips_um_ksegs_enabled(void); void mips_um_ksegs_enable(void); =20 --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014898; cv=none; d=zohomail.com; s=zohoarc; b=N1nkYXRC3DPUco/H5MU6t4TGQ4qF5X+cu+U8T8DRhBYSEXJrmPGBOCJCkmh5FK42LskSWOFglXgu1QXfWknHnWQQ+N5ocJl6Mw8oj8x5/FLKXX53OIKBF9gFDX1AByd+afopnRwBiI60bsRCYTHO86/UHpQRIjYjUnRTrwPQhc8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014898; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CcuYEBXjBiRPmx8lbuijIORHhzaA4uf+MOvFNB4uXzk=; b=mh0VkDaoGnsPmuhJI7NUopoPAhsWNZnJ9QgkEL94E/d7ZIOWor7b4LHWc+mtkYQfDYoopZ6LgYb00wt5+i1X/wCi5lPhxgQ1MKD5oMBlul9EpuWaiI/zEzalKUWNGXcBEib+liHvrYJEgeu/ROpjlYI+505HLbcMoU/cbVA/k0A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014898271416.3678171768448; Mon, 14 Dec 2020 22:48:18 -0800 (PST) Received: from localhost ([::1]:39908 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp489-0008Ez-5K for importer@patchew.org; Tue, 15 Dec 2020 01:48:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49576) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45Y-00066C-B0 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:36 -0500 Received: from relay1.mymailcheap.com ([144.217.248.102]:52765) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp45W-0004yQ-KD for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:45:36 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay1.mymailcheap.com (Postfix) with ESMTPS id 67EF43F1C5; Tue, 15 Dec 2020 06:45:33 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id 5103B2A370; Tue, 15 Dec 2020 01:45:33 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3EwHq_0GVmw4; Tue, 15 Dec 2020 01:45:32 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:45:32 -0500 (EST) Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) by mail20.mymailcheap.com (Postfix) with ESMTP id 7B9A8403B9; Tue, 15 Dec 2020 06:45:31 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id B9915403B9; Tue, 15 Dec 2020 06:45:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014733; bh=zJE5fp1EqMxX8dCgYttVAKHUtea9qIzC4ou0u94Fil8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YIjaqRKbm8okAknTPn3QCYqd9CBvnVqSbUbQnScN6L27LotxPPRARZXJ7BKMVoM9p 13mmxzF2HcJMfKEohode/T+1R+NSTwdDJEXDDHPCifl/7VRIllnkR+nhBxJkbJXjgs c4LxcW0QJ73S8fvq2GyNOubeFg3hCfhmScDJA5Xk= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="ksaOM1kY"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014725; bh=zJE5fp1EqMxX8dCgYttVAKHUtea9qIzC4ou0u94Fil8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ksaOM1kYC+I13E30ArOKNQA85/IDAJWP2yfsvL1F3cmd3ztzibThwl9YYp64rKGgG SkOHSTg5qVD2caPQ2NCff/W+3ArPEl0B2xs9YIKTREzdPI8TxP47Bl0slUFLWmI7Zc Haop3C2fj9Gjoghkim+zOrrCgspT+FKZkiPfju+o= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 7/8] hw/mips/malta: Use bootloader helper to set BAR resgiters Date: Tue, 15 Dec 2020 14:45:07 +0800 Message-Id: <20201215064507.30148-4-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] X-Rspamd-Queue-Id: 7B9A8403B9 X-Spam: Yes 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: pass client-ip=144.217.248.102; envelope-from=jiaxun.yang@flygoat.com; helo=relay1.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" Translate embedded assembly into IO writes which is more readable. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/malta.c | 68 ++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 49 deletions(-) diff --git a/hw/mips/malta.c b/hw/mips/malta.c index ffd67b8293..2799bc36c7 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -875,55 +875,25 @@ static void write_bootloader(uint8_t *base, uint64_t = run_addr, p =3D (uint32_t *) (base + 0x580); =20 /* Load BAR registers as done by YAMON */ - stl_p(p++, 0x3c09b400); /* lui t1, 0xb400 */ - -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c08df00); /* lui t0, 0xdf00 */ -#else - stl_p(p++, 0x340800df); /* ori t0, r0, 0x00df */ -#endif - stl_p(p++, 0xad280068); /* sw t0, 0x0068(t1) */ - - stl_p(p++, 0x3c09bbe0); /* lui t1, 0xbbe0 */ - -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c08c000); /* lui t0, 0xc000 */ -#else - stl_p(p++, 0x340800c0); /* ori t0, r0, 0x00c0 */ -#endif - stl_p(p++, 0xad280048); /* sw t0, 0x0048(t1) */ -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c084000); /* lui t0, 0x4000 */ -#else - stl_p(p++, 0x34080040); /* ori t0, r0, 0x0040 */ -#endif - stl_p(p++, 0xad280050); /* sw t0, 0x0050(t1) */ - -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c088000); /* lui t0, 0x8000 */ -#else - stl_p(p++, 0x34080080); /* ori t0, r0, 0x0080 */ -#endif - stl_p(p++, 0xad280058); /* sw t0, 0x0058(t1) */ -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c083f00); /* lui t0, 0x3f00 */ -#else - stl_p(p++, 0x3408003f); /* ori t0, r0, 0x003f */ -#endif - stl_p(p++, 0xad280060); /* sw t0, 0x0060(t1) */ - -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c08c100); /* lui t0, 0xc100 */ -#else - stl_p(p++, 0x340800c1); /* ori t0, r0, 0x00c1 */ -#endif - stl_p(p++, 0xad280080); /* sw t0, 0x0080(t1) */ -#ifdef TARGET_WORDS_BIGENDIAN - stl_p(p++, 0x3c085e00); /* lui t0, 0x5e00 */ -#else - stl_p(p++, 0x3408005e); /* ori t0, r0, 0x005e */ -#endif - stl_p(p++, 0xad280088); /* sw t0, 0x0088(t1) */ + /* move GT64120 registers from 0x14000000 to 0x1be00000 */ + bl_gen_write_u32(&p, cpu_to_be32(0xdf000000), + cpu_mips_phys_to_kseg1(NULL, 0x14000068)); + + /* setup MEM-to-PCI0 mapping */ + /* setup PCI0 io window to 0x18000000-0x181fffff */ + bl_gen_write_u32(&p, cpu_to_be32(0xc0000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00048)); + bl_gen_write_u32(&p, cpu_to_be32(0x40000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00050)); + /* setup PCI0 mem windows */ + bl_gen_write_u32(&p, cpu_to_be32(0x80000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00058)); + bl_gen_write_u32(&p, cpu_to_be32(0x3f000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00060)); + bl_gen_write_u32(&p, cpu_to_be32(0xc1000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00080)); + bl_gen_write_u32(&p, cpu_to_be32(0x5e000000), + cpu_mips_phys_to_kseg1(NULL, 0x1be00088)); =20 if (semihosting_get_argc()) { a0 =3D 0; --=20 2.29.2 From nobody Tue Nov 18 05:57:34 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=flygoat.com ARC-Seal: i=1; a=rsa-sha256; t=1608014926; cv=none; d=zohomail.com; s=zohoarc; b=OQjG6axALKGGzymZUyh75jclCT//SUxNcikiDDB6ssYWjGx7Y6578lx1pZc+TLE2DJRNhm0qbVluqBakQqLvo0PQYDJIakSHcSvuGIRMEvgajHMHy2/cVVCcd2zxXFF32qRfK2PgAaWRIm+gPGfEo59PUWSGalaB38KtYoVUMKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608014926; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nvbdI4YuzpTUlW0oLhP0RpVWS4mGGZRTzp49kVtC+i8=; b=SIxSmRlJV8I7sKScfc468zq5LpHo/ar97yixFs2MFBrr1JpB7nVr+q8Z4cqy8Is1tdS51iuEKMPzds+taX5GOxj6yPRJaQZcqX0ZMXcCvSZ10OR0QAYDbOJQPp/4pxVWSjl9W+jrTFFmaD2c2XnNn/XffqkBVB3fHHqxs7R8320= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608014926454216.33167519456254; Mon, 14 Dec 2020 22:48:46 -0800 (PST) Received: from localhost ([::1]:41760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kp48b-0000Zc-E9 for importer@patchew.org; Tue, 15 Dec 2020 01:48:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49822) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp46j-0007KU-Lq for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:46:49 -0500 Received: from relay2.mymailcheap.com ([217.182.113.132]:43738) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kp46g-0005VK-JC for qemu-devel@nongnu.org; Tue, 15 Dec 2020 01:46:49 -0500 Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay2.mymailcheap.com (Postfix) with ESMTPS id 9403A3EDEC; Tue, 15 Dec 2020 07:46:44 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id C1BE22A370; Tue, 15 Dec 2020 01:46:43 -0500 (EST) Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BdlQLTDOQ8Cb; Tue, 15 Dec 2020 01:46:43 -0500 (EST) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Tue, 15 Dec 2020 01:46:43 -0500 (EST) Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) by mail20.mymailcheap.com (Postfix) with ESMTP id 0CC3140026; Tue, 15 Dec 2020 06:46:42 +0000 (UTC) Received: from strike.U-LINK.com (unknown [116.228.84.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id 8F5E440026; Tue, 15 Dec 2020 06:46:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1608014803; bh=Mg/jh/NtAg4BAIaA2cE74QFzPqb6n/LIT/mGYdacmF4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SwlYPTVLSE/nnFz/y4cY/DQFhsByde7zrzM3nX0pYHb01WBIuiwpAA6Ag0E/nf7lJ QRSo9og/I3tv2yZBt/JWtrhqrBWdeXZEYCH45owrIeB8apoP1eW1YdZR64Sl1wqVVR VGmKuKfbrCGjEbJWJnhVJ4EIRfJMNSAnSBVHKWMk= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="PXi8Wgzw"; dkim-atps=neutral AI-Spam-Status: Not processed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1608014798; bh=Mg/jh/NtAg4BAIaA2cE74QFzPqb6n/LIT/mGYdacmF4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PXi8WgzwEQsXeLddkL5G/Qp78BgYsUEDU5jFGtayYgO9rCqWWjwarM0RzvJ2CsU0e ZPp6yL9r/e/ENmWubIyzmzfyxfpV5X5aaStvpUfKQkZQ0vzBcQtAlFE+qrTRJlyD4L +EhjdBTHLKYiQ81M8YITv+th9NnGhiTk8AOjWsIw= From: Jiaxun Yang To: qemu-devel@nongnu.org Subject: [PATCH v2 8/8] hw/mips/boston: Use bootloader helper to set GCRs Date: Tue, 15 Dec 2020 14:46:31 +0800 Message-Id: <20201215064631.30504-1-jiaxun.yang@flygoat.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201215064200.28751-1-jiaxun.yang@flygoat.com> References: <20201215064200.28751-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: mail20.mymailcheap.com X-Spamd-Result: default: False [4.90 / 10.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[213.133.102.83]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; MID_CONTAINS_FROM(1.00)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] X-Rspamd-Queue-Id: 0CC3140026 X-Spam: Yes 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: pass client-ip=217.182.113.132; envelope-from=jiaxun.yang@flygoat.com; helo=relay2.mymailcheap.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Jiaxun Yang , chenhuacai@kernel.org, f4bug@amsat.org, paulburton@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Content-Type: text/plain; charset="utf-8" Translate embedded assembly into IO writes which is more readable. Also hardcode cm_base at boot time instead of reading from CP0. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 --- hw/mips/boston.c | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index b622222c7d..9f08aa7285 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -281,42 +281,21 @@ static void gen_firmware(uint32_t *p, hwaddr kernel_e= ntry, hwaddr fdt_addr, const uint32_t gic_base =3D 0x16120000; const uint32_t cpc_base =3D 0x16200000; =20 - /* Move CM GCRs */ if (is_64b) { - stl_p(p++, 0x40287803); /* dmfc0 $8, CMGCRBase */ - stl_p(p++, 0x00084138); /* dsll $8, $8, 4 */ + bl_gen_write_u64(&p, cm_base, + cpu_mips_phys_to_kseg1(NULL, GCR_BASE_ADDR + GCR_BASE_= OFS)); + bl_gen_write_u64(&p, gic_base | GCR_GIC_BASE_GICEN_MSK, + cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_GIC_BASE_OF= S)); + bl_gen_write_u64(&p, cpc_base | GCR_CPC_BASE_CPCEN_MSK, + cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_CPC_BASE_OF= S)); } else { - stl_p(p++, 0x40087803); /* mfc0 $8, CMGCRBase */ - stl_p(p++, 0x00084100); /* sll $8, $8, 4 */ + bl_gen_write_u32(&p, cm_base, + cpu_mips_phys_to_kseg1(NULL, GCR_BASE_ADDR + GCR_BASE_= OFS)); + bl_gen_write_u32(&p, gic_base | GCR_GIC_BASE_GICEN_MSK, + cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_GIC_BASE_OF= S)); + bl_gen_write_u32(&p, cpc_base | GCR_CPC_BASE_CPCEN_MSK, + cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_CPC_BASE_OF= S)); } - stl_p(p++, 0x3c09a000); /* lui $9, 0xa000 */ - stl_p(p++, 0x01094025); /* or $8, $9 */ - stl_p(p++, 0x3c0a0000 | (cm_base >> 16)); /* lui $10, cm_base >> 16= */ - if (is_64b) { - stl_p(p++, 0xfd0a0008); /* sd $10, 0x8($8) */ - } else { - stl_p(p++, 0xad0a0008); /* sw $10, 0x8($8) */ - } - stl_p(p++, 0x012a4025); /* or $8, $10 */ - - /* Move & enable GIC GCRs */ - stl_p(p++, 0x3c090000 | (gic_base >> 16)); /* lui $9, gic_base >> 16= */ - stl_p(p++, 0x35290001); /* ori $9, 0x1 */ - if (is_64b) { - stl_p(p++, 0xfd090080); /* sd $9, 0x80($8) */ - } else { - stl_p(p++, 0xad090080); /* sw $9, 0x80($8) */ - } - - /* Move & enable CPC GCRs */ - stl_p(p++, 0x3c090000 | (cpc_base >> 16)); /* lui $9, cpc_base >> 16= */ - stl_p(p++, 0x35290001); /* ori $9, 0x1 */ - if (is_64b) { - stl_p(p++, 0xfd090088); /* sd $9, 0x88($8) */ - } else { - stl_p(p++, 0xad090088); /* sw $9, 0x88($8) */ - } - /* * Setup argument registers to follow the UHI boot protocol: * --=20 2.29.2