On 1/3/26 15:51, Dr. David Alan Gilbert wrote:
* Philippe Mathieu-Daudé ([email protected]) wrote:
The Alpha architecture uses little endianness. Directly

Wasn't there one, odd case of the T3E running it big-endian?
(I have no idea how that worked in practice).

Richard said it was not necessary to mention it in the code:
https://lore.kernel.org/qemu-devel/[email protected]/
https://lore.kernel.org/qemu-devel/[email protected]/

I could have mentioned it here in the commit description
for clarity but didn't think about it...


Dave

use the little-endian LD/ST API.

Mechanical change running:

   $ for a in uw w l q; do \
       sed -i -e "s/ld${a}_p(/ld${a}_le_p(/" \
         $(git grep -wlE '(ld|st)u?[wlq]_p' target/alpha/);
     done

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Manos Pitsidianakis <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-Id: <[email protected]>
---
  target/alpha/helper.c | 11 ++++++-----
  1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index a9af52a928f..80542cb0665 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -214,17 +214,18 @@ static int get_physical_address(CPUAlphaState *env, 
target_ulong addr,
pt = env->ptbr; - /* TODO: rather than using ldq_phys() to read the page table we should
+    /*
+     * TODO: rather than using ldq_phys_le() to read the page table we should
       * use address_space_ldq() so that we can handle the case when
       * the page table read gives a bus fault, rather than ignoring it.
-     * For the existing code the zero data that ldq_phys will return for
+     * For the existing code the zero data that ldq_phys_le will return for
       * an access to invalid memory will result in our treating the page
       * table as invalid, which may even be the right behaviour.
       */
/* L1 page table read. */
      index = (addr >> (TARGET_PAGE_BITS + 20)) & 0x3ff;
-    L1pte = ldq_phys(cs->as, pt + index*8);
+    L1pte = ldq_phys_le(cs->as, pt + index * 8);
if (unlikely((L1pte & PTE_VALID) == 0)) {
          ret = MM_K_TNV;
@@ -237,7 +238,7 @@ static int get_physical_address(CPUAlphaState *env, 
target_ulong addr,
/* L2 page table read. */
      index = (addr >> (TARGET_PAGE_BITS + 10)) & 0x3ff;
-    L2pte = ldq_phys(cs->as, pt + index*8);
+    L2pte = ldq_phys_le(cs->as, pt + index * 8);
if (unlikely((L2pte & PTE_VALID) == 0)) {
          ret = MM_K_TNV;
@@ -250,7 +251,7 @@ static int get_physical_address(CPUAlphaState *env, 
target_ulong addr,
/* L3 page table read. */
      index = (addr >> TARGET_PAGE_BITS) & 0x3ff;
-    L3pte = ldq_phys(cs->as, pt + index*8);
+    L3pte = ldq_phys_le(cs->as, pt + index * 8);
phys = L3pte >> 32 << TARGET_PAGE_BITS;
      if (unlikely((L3pte & PTE_VALID) == 0)) {
--
2.52.0




Reply via email to