From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, "Michael Rolnik" <mrolnik@gmail.com>,
"Halil Pasic" <pasic@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Frederic Konrad" <konrad.frederic@yahoo.fr>,
"Artyom Tarasenko" <atar4qemu@gmail.com>,
"Matthew Rosato" <mjrosato@linux.ibm.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"David Hildenbrand" <david@redhat.com>,
"Peter Xu" <peterx@redhat.com>,
"Ilya Leoshkevich" <iii@linux.ibm.com>,
"Song Gao" <gaosong@loongson.cn>,
"Thomas Huth" <thuth@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
qemu-s390x@nongnu.org, "Laurent Vivier" <laurent@vivier.eu>,
"Eric Farman" <farman@linux.ibm.com>,
"Clément Chigot" <chigot@adacore.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Thomas Huth" <huth@tuxfamily.org>,
"Bastian Koppelmann" <kbastian@mail.uni-paderborn.de>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>
Subject: [PATCH 11/16] hw/sparc: Use explicit big-endian LD/ST API
Date: Fri, 4 Oct 2024 01:42:06 +0200 [thread overview]
Message-ID: <20241003234211.53644-12-philmd@linaro.org> (raw)
In-Reply-To: <20241003234211.53644-1-philmd@linaro.org>
The SPARC architecture uses big endianness. Directly use
the big-endian LD/ST API.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/sparc/leon3.c | 42 +++++++++++++++++++++---------------------
hw/sparc/sun4m.c | 6 +++---
hw/sparc64/sun4u.c | 6 +++---
3 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index 6aaa04cb191..021b5070128 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -78,21 +78,21 @@ typedef struct ResetData {
static uint32_t *gen_store_u32(uint32_t *code, hwaddr addr, uint32_t val)
{
- stl_p(code++, 0x82100000); /* mov %g0, %g1 */
- stl_p(code++, 0x84100000); /* mov %g0, %g2 */
- stl_p(code++, 0x03000000 +
+ stl_be_p(code++, 0x82100000); /* mov %g0, %g1 */
+ stl_be_p(code++, 0x84100000); /* mov %g0, %g2 */
+ stl_be_p(code++, 0x03000000 +
extract32(addr, 10, 22));
/* sethi %hi(addr), %g1 */
- stl_p(code++, 0x82106000 +
+ stl_be_p(code++, 0x82106000 +
extract32(addr, 0, 10));
/* or %g1, addr, %g1 */
- stl_p(code++, 0x05000000 +
+ stl_be_p(code++, 0x05000000 +
extract32(val, 10, 22));
/* sethi %hi(val), %g2 */
- stl_p(code++, 0x8410a000 +
+ stl_be_p(code++, 0x8410a000 +
extract32(val, 0, 10));
/* or %g2, val, %g2 */
- stl_p(code++, 0xc4204000); /* st %g2, [ %g1 ] */
+ stl_be_p(code++, 0xc4204000); /* st %g2, [ %g1 ] */
return code;
}
@@ -112,13 +112,13 @@ static void write_bootloader(void *ptr, hwaddr kernel_addr)
/* If we are running on a secondary CPU, jump directly to the kernel. */
- stl_p(p++, 0x85444000); /* rd %asr17, %g2 */
- stl_p(p++, 0x8530a01c); /* srl %g2, 0x1c, %g2 */
- stl_p(p++, 0x80908000); /* tst %g2 */
+ stl_be_p(p++, 0x85444000); /* rd %asr17, %g2 */
+ stl_be_p(p++, 0x8530a01c); /* srl %g2, 0x1c, %g2 */
+ stl_be_p(p++, 0x80908000); /* tst %g2 */
/* Filled below. */
sec_cpu_branch_p = p;
- stl_p(p++, 0x0BADC0DE); /* bne xxx */
- stl_p(p++, 0x01000000); /* nop */
+ stl_be_p(p++, 0x0BADC0DE); /* bne xxx */
+ stl_be_p(p++, 0x01000000); /* nop */
/* Initialize the UARTs */
/* *UART_CONTROL = UART_RECEIVE_ENABLE | UART_TRANSMIT_ENABLE; */
@@ -133,17 +133,17 @@ static void write_bootloader(void *ptr, hwaddr kernel_addr)
p = gen_store_u32(p, 0x80000318, 3);
/* Now, the relative branch above can be computed. */
- stl_p(sec_cpu_branch_p, 0x12800000
- + (p - sec_cpu_branch_p));
+ stl_be_p(sec_cpu_branch_p, 0x12800000
+ + (p - sec_cpu_branch_p));
/* JUMP to the entry point */
- stl_p(p++, 0x82100000); /* mov %g0, %g1 */
- stl_p(p++, 0x03000000 + extract32(kernel_addr, 10, 22));
- /* sethi %hi(kernel_addr), %g1 */
- stl_p(p++, 0x82106000 + extract32(kernel_addr, 0, 10));
- /* or kernel_addr, %g1 */
- stl_p(p++, 0x81c04000); /* jmp %g1 */
- stl_p(p++, 0x01000000); /* nop */
+ stl_be_p(p++, 0x82100000); /* mov %g0, %g1 */
+ stl_be_p(p++, 0x03000000 + extract32(kernel_addr, 10, 22));
+ /* sethi %hi(kernel_addr), %g1 */
+ stl_be_p(p++, 0x82106000 + extract32(kernel_addr, 0, 10));
+ /* or kernel_addr, %g1 */
+ stl_be_p(p++, 0x81c04000); /* jmp %g1 */
+ stl_be_p(p++, 0x01000000); /* nop */
}
static void leon3_cpu_reset(void *opaque)
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index d52e6a7213f..f375f0d389b 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -271,9 +271,9 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
if (*initrd_size > 0) {
for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) {
ptr = rom_ptr(KERNEL_LOAD_ADDR + i, 24);
- if (ptr && ldl_p(ptr) == 0x48647253) { /* HdrS */
- stl_p(ptr + 16, INITRD_LOAD_ADDR);
- stl_p(ptr + 20, *initrd_size);
+ if (ptr && ldl_be_p(ptr) == 0x48647253) { /* HdrS */
+ stl_be_p(ptr + 16, INITRD_LOAD_ADDR);
+ stl_be_p(ptr + 20, *initrd_size);
break;
}
}
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 4ece1ac1ffc..e591e5a741a 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -210,9 +210,9 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
if (*initrd_size > 0) {
for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) {
ptr = rom_ptr(*kernel_addr + i, 32);
- if (ptr && ldl_p(ptr + 8) == 0x48647253) { /* HdrS */
- stl_p(ptr + 24, *initrd_addr + *kernel_addr);
- stl_p(ptr + 28, *initrd_size);
+ if (ptr && ldl_be_p(ptr + 8) == 0x48647253) { /* HdrS */
+ stl_be_p(ptr + 24, *initrd_addr + *kernel_addr);
+ stl_be_p(ptr + 28, *initrd_size);
break;
}
}
--
2.45.2
next prev parent reply other threads:[~2024-10-03 23:44 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-03 23:41 [PATCH 00/16] misc: Use explicit endian LD/ST API Philippe Mathieu-Daudé
2024-10-03 23:41 ` [PATCH 01/16] qemu/bswap: Undefine CPU_CONVERT() once done Philippe Mathieu-Daudé
2024-10-07 5:50 ` Thomas Huth
2024-10-03 23:41 ` [PATCH 02/16] exec/memop: Remove unused memop_big_endian() helper Philippe Mathieu-Daudé
2024-10-07 5:51 ` Thomas Huth
2024-10-03 23:41 ` [PATCH 03/16] linux-user/i386: Use explicit little-endian LD/ST API Philippe Mathieu-Daudé
2024-10-07 5:52 ` Thomas Huth
2024-10-03 23:41 ` [PATCH 04/16] hw/i386: " Philippe Mathieu-Daudé
2024-10-04 8:41 ` Philippe Mathieu-Daudé
2024-10-03 23:42 ` [PATCH 05/16] target/i386: " Philippe Mathieu-Daudé
2024-10-03 23:42 ` [PATCH 06/16] hw/m68k: Use explicit big-endian " Philippe Mathieu-Daudé
2024-10-04 16:35 ` Thomas Huth
2024-10-03 23:42 ` [PATCH 07/16] target/m68k: " Philippe Mathieu-Daudé
2024-10-04 16:36 ` Thomas Huth
2024-10-03 23:42 ` [PATCH 08/16] hw/ppc/e500: " Philippe Mathieu-Daudé
2024-10-03 23:42 ` [PATCH 09/16] hw/s390x: " Philippe Mathieu-Daudé
2024-10-07 5:48 ` Thomas Huth
2024-10-03 23:42 ` [PATCH 10/16] target/s390x: " Philippe Mathieu-Daudé
2024-10-07 5:49 ` Thomas Huth
2024-10-03 23:42 ` Philippe Mathieu-Daudé [this message]
2024-10-04 17:31 ` [PATCH 11/16] hw/sparc: " Mark Cave-Ayland
2024-10-07 7:03 ` Clément Chigot
2024-10-03 23:42 ` [PATCH 12/16] target/sparc: " Philippe Mathieu-Daudé
2024-10-04 17:32 ` Mark Cave-Ayland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241003234211.53644-12-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=atar4qemu@gmail.com \
--cc=borntraeger@linux.ibm.com \
--cc=chigot@adacore.com \
--cc=david@redhat.com \
--cc=eduardo@habkost.net \
--cc=farman@linux.ibm.com \
--cc=gaosong@loongson.cn \
--cc=huth@tuxfamily.org \
--cc=iii@linux.ibm.com \
--cc=kbastian@mail.uni-paderborn.de \
--cc=konrad.frederic@yahoo.fr \
--cc=laurent@vivier.eu \
--cc=marcel.apfelbaum@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mjrosato@linux.ibm.com \
--cc=mrolnik@gmail.com \
--cc=mst@redhat.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.