]> Git Repo - qemu.git/blobdiff - target-ppc/op_helper.c
Show IRQ set or reset (Robert Reif)
[qemu.git] / target-ppc / op_helper.c
index 61075c08662c489ee0baf785cbbf8c6fc2948a18..1ea16951ba6d60897ffc4f85a5a9862b5940e61e 100644 (file)
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 #include "exec.h"
+#include "host-utils.h"
 
 #include "helper_regs.h"
 #include "op_helper.h"
 #define MEMSUFFIX _kernel
 #include "op_helper.h"
 #include "op_helper_mem.h"
-#if defined(TARGET_PPC64H)
 #define MEMSUFFIX _hypv
 #include "op_helper.h"
 #include "op_helper_mem.h"
 #endif
-#endif
 
 //#define DEBUG_OP
 //#define DEBUG_EXCEPTIONS
@@ -150,15 +149,12 @@ void do_addmeo (void)
 {
     T1 = T0;
     T0 += xer_ca + (-1);
-    if (likely(!((uint32_t)T1 &
-                 ((uint32_t)T1 ^ (uint32_t)T0) & (1UL << 31)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = ((uint32_t)T1 & ((uint32_t)T1 ^ (uint32_t)T0)) >> 31;
+    xer_so |= xer_ov;
     if (likely(T1 != 0))
         xer_ca = 1;
+    else
+        xer_ca = 0;
 }
 
 #if defined(TARGET_PPC64)
@@ -166,43 +162,40 @@ void do_addmeo_64 (void)
 {
     T1 = T0;
     T0 += xer_ca + (-1);
-    if (likely(!((uint64_t)T1 &
-                 ((uint64_t)T1 ^ (uint64_t)T0) & (1ULL << 63)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = ((uint64_t)T1 & ((uint64_t)T1 ^ (uint64_t)T0)) >> 63;
+    xer_so |= xer_ov;
     if (likely(T1 != 0))
         xer_ca = 1;
+    else
+        xer_ca = 0;
 }
 #endif
 
 void do_divwo (void)
 {
-    if (likely(!(((int32_t)T0 == INT32_MIN && (int32_t)T1 == -1) ||
+    if (likely(!(((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||
                  (int32_t)T1 == 0))) {
         xer_ov = 0;
         T0 = (int32_t)T0 / (int32_t)T1;
     } else {
         xer_ov = 1;
-        xer_so = 1;
-        T0 = (-1) * ((uint32_t)T0 >> 31);
+        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);
     }
+    xer_so |= xer_ov;
 }
 
 #if defined(TARGET_PPC64)
 void do_divdo (void)
 {
-    if (likely(!(((int64_t)T0 == INT64_MIN && (int64_t)T1 == -1ULL) ||
+    if (likely(!(((int64_t)T0 == INT64_MIN && (int64_t)T1 == (int64_t)-1LL) ||
                  (int64_t)T1 == 0))) {
         xer_ov = 0;
         T0 = (int64_t)T0 / (int64_t)T1;
     } else {
         xer_ov = 1;
-        xer_so = 1;
-        T0 = (-1ULL) * ((uint64_t)T0 >> 63);
+        T0 = UINT64_MAX * ((uint64_t)T0 >> 63);
     }
+    xer_so |= xer_ov;
 }
 #endif
 
@@ -252,14 +245,14 @@ void do_mulldo (void)
     uint64_t tl;
 
     muls64(&tl, &th, T0, T1);
+    T0 = (int64_t)tl;
     /* If th != 0 && th != -1, then we had an overflow */
-    if (likely((th + 1) <= 1)) {
+    if (likely((uint64_t)(th + 1) <= 1)) {
         xer_ov = 0;
     } else {
         xer_ov = 1;
-        xer_so = 1;
     }
-    T0 = (int64_t)tl;
+    xer_so |= xer_ov;
 }
 #endif
 
@@ -315,15 +308,12 @@ void do_subfmeo (void)
 {
     T1 = T0;
     T0 = ~T0 + xer_ca - 1;
-    if (likely(!((uint32_t)~T1 & ((uint32_t)~T1 ^ (uint32_t)T0) &
-                 (1UL << 31)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = ((uint32_t)~T1 & ((uint32_t)~T1 ^ (uint32_t)T0)) >> 31;
+    xer_so |= xer_ov;
     if (likely((uint32_t)T1 != UINT32_MAX))
         xer_ca = 1;
+    else
+        xer_ca = 0;
 }
 
 #if defined(TARGET_PPC64)
@@ -331,15 +321,12 @@ void do_subfmeo_64 (void)
 {
     T1 = T0;
     T0 = ~T0 + xer_ca - 1;
-    if (likely(!((uint64_t)~T1 & ((uint64_t)~T1 ^ (uint64_t)T0) &
-                 (1ULL << 63)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = ((uint64_t)~T1 & ((uint64_t)~T1 ^ (uint64_t)T0)) >> 63;
+    xer_so |= xer_ov;
     if (likely((uint64_t)T1 != UINT64_MAX))
         xer_ca = 1;
+    else
+        xer_ca = 0;
 }
 #endif
 
@@ -347,13 +334,9 @@ void do_subfzeo (void)
 {
     T1 = T0;
     T0 = ~T0 + xer_ca;
-    if (likely(!(((uint32_t)~T1 ^ UINT32_MAX) &
-                 ((uint32_t)(~T1) ^ (uint32_t)T0) & (1UL << 31)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = (((uint32_t)~T1 ^ UINT32_MAX) &
+              ((uint32_t)(~T1) ^ (uint32_t)T0)) >> 31;
+    xer_so |= xer_ov;
     if (likely((uint32_t)T0 >= (uint32_t)~T1)) {
         xer_ca = 0;
     } else {
@@ -366,13 +349,9 @@ void do_subfzeo_64 (void)
 {
     T1 = T0;
     T0 = ~T0 + xer_ca;
-    if (likely(!(((uint64_t)~T1 ^ UINT64_MAX) &
-                 ((uint64_t)(~T1) ^ (uint64_t)T0) & (1ULL << 63)))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
+    xer_ov = (((uint64_t)~T1 ^  UINT64_MAX) &
+              ((uint64_t)(~T1) ^ (uint64_t)T0)) >> 63;
+    xer_so |= xer_ov;
     if (likely((uint64_t)T0 >= (uint64_t)~T1)) {
         xer_ca = 0;
     } else {
@@ -381,6 +360,18 @@ void do_subfzeo_64 (void)
 }
 #endif
 
+void do_cntlzw (void)
+{
+    T0 = clz32(T0);
+}
+
+#if defined(TARGET_PPC64)
+void do_cntlzd (void)
+{
+    T0 = clz64(T0);
+}
+#endif
+
 /* shift right arithmetic helper */
 void do_sraw (void)
 {
@@ -399,7 +390,7 @@ void do_sraw (void)
             xer_ca = 0;
         }
     } else {
-        ret = (-1) * ((uint32_t)T0 >> 31);
+        ret = UINT32_MAX * ((uint32_t)T0 >> 31);
         if (likely(ret >= 0 || ((uint32_t)T0 & ~0x80000000UL) == 0)) {
             xer_ca = 0;
         } else {
@@ -427,7 +418,7 @@ void do_srad (void)
             xer_ca = 0;
         }
     } else {
-        ret = (-1) * ((uint64_t)T0 >> 63);
+        ret = UINT64_MAX * ((uint64_t)T0 >> 63);
         if (likely(ret >= 0 || ((uint64_t)T0 & ~0x8000000000000000ULL) == 0)) {
             xer_ca = 0;
         } else {
@@ -438,16 +429,6 @@ void do_srad (void)
 }
 #endif
 
-static always_inline int popcnt (uint32_t val)
-{
-    int i;
-
-    for (i = 0; val != 0;)
-        val = val ^ (val - 1);
-
-    return i;
-}
-
 void do_popcntb (void)
 {
     uint32_t ret;
@@ -455,7 +436,7 @@ void do_popcntb (void)
 
     ret = 0;
     for (i = 0; i < 32; i += 8)
-        ret |= popcnt((T0 >> i) & 0xFF) << i;
+        ret |= ctpop8((T0 >> i) & 0xFF) << i;
     T0 = ret;
 }
 
@@ -467,7 +448,7 @@ void do_popcntb_64 (void)
 
     ret = 0;
     for (i = 0; i < 64; i += 8)
-        ret |= popcnt((T0 >> i) & 0xFF) << i;
+        ret |= ctpop8((T0 >> i) & 0xFF) << i;
     T0 = ret;
 }
 #endif
@@ -519,7 +500,7 @@ static always_inline int isinfinity (float64 f)
 
     u.f = f;
 
-    return ((u.u >> 52) & 0x3FF) == 0x3FF &&
+    return ((u.u >> 52) & 0x7FF) == 0x7FF &&
         (u.u & 0x000FFFFFFFFFFFFFULL) == 0;
 }
 
@@ -626,7 +607,7 @@ static always_inline void fload_invalid_op_excp (int op)
         env->fpscr &= ~((1 << FPSCR_FR) | (1 << FPSCR_FI));
         if (ve == 0) {
             /* Set the result to quiet NaN */
-            FT0 = (uint64_t)-1;
+            FT0 = UINT64_MAX;
             env->fpscr &= ~(0xF << FPSCR_FPCC);
             env->fpscr |= 0x11 << FPSCR_FPCC;
         }
@@ -637,7 +618,7 @@ static always_inline void fload_invalid_op_excp (int op)
         env->fpscr &= ~((1 << FPSCR_FR) | (1 << FPSCR_FI));
         if (ve == 0) {
             /* Set the result to quiet NaN */
-            FT0 = (uint64_t)-1;
+            FT0 = UINT64_MAX;
             env->fpscr &= ~(0xF << FPSCR_FPCC);
             env->fpscr |= 0x11 << FPSCR_FPCC;
         }
@@ -678,7 +659,7 @@ static always_inline void float_zero_divide_excp (void)
         u0.f = FT0;
         u1.f = FT1;
         u0.u = ((u0.u ^ u1.u) & 0x8000000000000000ULL);
-        u0.u |= 0x3FFULL << 52;
+        u0.u |= 0x7FFULL << 52;
         FT0 = u0.f;
     }
 }
@@ -1444,7 +1425,7 @@ void cpu_dump_rfi (target_ulong RA, target_ulong msr);
 
 void do_store_msr (void)
 {
-    T0 = hreg_store_msr(env, T0);
+    T0 = hreg_store_msr(env, T0, 0);
     if (T0 != 0) {
         env->interrupt_request |= CPU_INTERRUPT_EXITTB;
         do_raise_exception(T0);
@@ -1470,7 +1451,7 @@ static always_inline void __do_rfi (target_ulong nip, target_ulong msr,
 #endif
     /* XXX: beware: this is false if VLE is supported */
     env->nip = nip & ~((target_ulong)0x00000003);
-    hreg_store_msr(env, msr);
+    hreg_store_msr(env, msr, 1);
 #if defined (DEBUG_OP)
     cpu_dump_rfi(env->nip, env->msr);
 #endif
@@ -1492,8 +1473,7 @@ void do_rfid (void)
     __do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
              ~((target_ulong)0xFFFF0000), 0);
 }
-#endif
-#if defined(TARGET_PPC64H)
+
 void do_hrfid (void)
 {
     __do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
@@ -1529,14 +1509,16 @@ void do_td (int flags)
 /* PowerPC 601 specific instructions (POWER bridge) */
 void do_POWER_abso (void)
 {
-    if ((uint32_t)T0 == INT32_MIN) {
+    if ((int32_t)T0 == INT32_MIN) {
         T0 = INT32_MAX;
         xer_ov = 1;
-        xer_so = 1;
-    } else {
+    } else if ((int32_t)T0 < 0) {
         T0 = -T0;
         xer_ov = 0;
+    } else {
+        xer_ov = 0;
     }
+    xer_so |= xer_ov;
 }
 
 void do_POWER_clcs (void)
@@ -1570,8 +1552,9 @@ void do_POWER_div (void)
 {
     uint64_t tmp;
 
-    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == -1) || (int32_t)T1 == 0) {
-        T0 = (long)((-1) * (T0 >> 31));
+    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||
+        (int32_t)T1 == 0) {
+        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);
         env->spr[SPR_MQ] = 0;
     } else {
         tmp = ((uint64_t)T0 << 32) | env->spr[SPR_MQ];
@@ -1584,29 +1567,30 @@ void do_POWER_divo (void)
 {
     int64_t tmp;
 
-    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == -1) || (int32_t)T1 == 0) {
-        T0 = (long)((-1) * (T0 >> 31));
+    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||
+        (int32_t)T1 == 0) {
+        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);
         env->spr[SPR_MQ] = 0;
         xer_ov = 1;
-        xer_so = 1;
     } else {
         tmp = ((uint64_t)T0 << 32) | env->spr[SPR_MQ];
         env->spr[SPR_MQ] = tmp % T1;
         tmp /= (int32_t)T1;
         if (tmp > (int64_t)INT32_MAX || tmp < (int64_t)INT32_MIN) {
             xer_ov = 1;
-            xer_so = 1;
         } else {
             xer_ov = 0;
         }
         T0 = tmp;
     }
+    xer_so |= xer_ov;
 }
 
 void do_POWER_divs (void)
 {
-    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == -1) || (int32_t)T1 == 0) {
-        T0 = (long)((-1) * (T0 >> 31));
+    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||
+        (int32_t)T1 == 0) {
+        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);
         env->spr[SPR_MQ] = 0;
     } else {
         env->spr[SPR_MQ] = T0 % T1;
@@ -1616,16 +1600,17 @@ void do_POWER_divs (void)
 
 void do_POWER_divso (void)
 {
-    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == -1) || (int32_t)T1 == 0) {
-        T0 = (long)((-1) * (T0 >> 31));
+    if (((int32_t)T0 == INT32_MIN && (int32_t)T1 == (int32_t)-1) ||
+        (int32_t)T1 == 0) {
+        T0 = UINT32_MAX * ((uint32_t)T0 >> 31);
         env->spr[SPR_MQ] = 0;
         xer_ov = 1;
-        xer_so = 1;
     } else {
         T0 = (int32_t)T0 / (int32_t)T1;
         env->spr[SPR_MQ] = (int32_t)T0 % (int32_t)T1;
         xer_ov = 0;
     }
+    xer_so |= xer_ov;
 }
 
 void do_POWER_dozo (void)
@@ -1651,10 +1636,10 @@ void do_POWER_maskg (void)
     uint32_t ret;
 
     if ((uint32_t)T0 == (uint32_t)(T1 + 1)) {
-        ret = -1;
+        ret = UINT32_MAX;
     } else {
-        ret = (((uint32_t)(-1)) >> ((uint32_t)T0)) ^
-            (((uint32_t)(-1) >> ((uint32_t)T1)) >> 1);
+        ret = (UINT32_MAX >> ((uint32_t)T0)) ^
+            ((UINT32_MAX >> ((uint32_t)T1)) >> 1);
         if ((uint32_t)T0 > (uint32_t)T1)
             ret = ~ret;
     }
@@ -1679,15 +1664,18 @@ void do_POWER_mulo (void)
 #if !defined (CONFIG_USER_ONLY)
 void do_POWER_rac (void)
 {
-#if 0
     mmu_ctx_t ctx;
+    int nb_BATs;
 
     /* We don't have to generate many instances of this instruction,
      * as rac is supervisor only.
      */
-    if (get_physical_address(env, &ctx, T0, 0, ACCESS_INT, 1) == 0)
+    /* XXX: FIX THIS: Pretend we have no BAT */
+    nb_BATs = env->nb_BATs;
+    env->nb_BATs = 0;
+    if (get_physical_address(env, &ctx, T0, 0, ACCESS_INT) == 0)
         T0 = ctx.raddr;
-#endif
+    env->nb_BATs = nb_BATs;
 }
 
 void do_POWER_rfsvc (void)
@@ -1695,12 +1683,23 @@ void do_POWER_rfsvc (void)
     __do_rfi(env->lr, env->ctr, 0x0000FFFF, 0);
 }
 
-/* PowerPC 601 BAT management helper */
-void do_store_601_batu (int nr)
+void do_store_hid0_601 (void)
 {
-    do_store_ibatu(env, nr, (uint32_t)T0);
-    env->DBAT[0][nr] = env->IBAT[0][nr];
-    env->DBAT[1][nr] = env->IBAT[1][nr];
+    uint32_t hid0;
+
+    hid0 = env->spr[SPR_HID0];
+    if ((T0 ^ hid0) & 0x00000008) {
+        /* Change current endianness */
+        env->hflags &= ~(1 << MSR_LE);
+        env->hflags_nmsr &= ~(1 << MSR_LE);
+        env->hflags_nmsr |= (1 << MSR_LE) & (((T0 >> 3) & 1) << MSR_LE);
+        env->hflags |= env->hflags_nmsr;
+        if (loglevel != 0) {
+            fprintf(logfile, "%s: set endianness to %c => " ADDRX "\n",
+                    __func__, T0 & 0x8 ? 'l' : 'b', env->hflags);
+        }
+    }
+    env->spr[SPR_HID0] = T0;
 }
 #endif
 
@@ -1738,17 +1737,6 @@ void do_op_602_mfrom (void)
 
 /*****************************************************************************/
 /* Embedded PowerPC specific helpers */
-void do_405_check_ov (void)
-{
-    if (likely((((uint32_t)T1 ^ (uint32_t)T2) >> 31) ||
-               !(((uint32_t)T0 ^ (uint32_t)T2) >> 31))) {
-        xer_ov = 0;
-    } else {
-        xer_ov = 1;
-        xer_so = 1;
-    }
-}
-
 void do_405_check_sat (void)
 {
     if (!likely((((uint32_t)T1 ^ (uint32_t)T2) >> 31) ||
@@ -1862,7 +1850,6 @@ void do_440_dlmzb (void)
     T0 = i;
 }
 
-#if defined(TARGET_PPCEMB)
 /* SPE extension helpers */
 /* Use a table to make this quicker */
 static uint8_t hbrev[16] = {
@@ -1881,16 +1868,16 @@ static always_inline uint32_t word_reverse (uint32_t val)
         (byte_reverse(val >> 8) << 16) | (byte_reverse(val) << 24);
 }
 
-#define MASKBITS 16 // Random value - to be fixed
+#define MASKBITS 16 // Random value - to be fixed (implementation dependant)
 void do_brinc (void)
 {
     uint32_t a, b, d, mask;
 
-    mask = (uint32_t)(-1UL) >> MASKBITS;
-    b = T1_64 & mask;
-    a = T0_64 & mask;
-    d = word_reverse(1 + word_reverse(a | ~mask));
-    T0_64 = (T0_64 & ~mask) | (d & mask);
+    mask = UINT32_MAX >> (32 - MASKBITS);
+    a = T0 & mask;
+    b = T1 & mask;
+    d = word_reverse(1 + word_reverse(a | ~b));
+    T0 = (T0 & ~mask) | (d & b);
 }
 
 #define DO_SPE_OP2(name)                                                      \
@@ -1910,8 +1897,8 @@ void do_ev##name (void)                                                       \
 /* Fixed-point vector arithmetic */
 static always_inline uint32_t _do_eabs (uint32_t val)
 {
-    if (val != 0x80000000)
-        val &= ~0x80000000;
+    if ((val & 0x80000000) && val != 0x80000000)
+        val -= val;
 
     return val;
 }
@@ -1924,20 +1911,20 @@ static always_inline uint32_t _do_eaddw (uint32_t op1, uint32_t op2)
 static always_inline int _do_ecntlsw (uint32_t val)
 {
     if (val & 0x80000000)
-        return _do_cntlzw(~val);
+        return clz32(~val);
     else
-        return _do_cntlzw(val);
+        return clz32(val);
 }
 
 static always_inline int _do_ecntlzw (uint32_t val)
 {
-    return _do_cntlzw(val);
+    return clz32(val);
 }
 
 static always_inline uint32_t _do_eneg (uint32_t val)
 {
     if (val != 0x80000000)
-        val ^= 0x80000000;
+        val -= val;
 
     return val;
 }
@@ -2722,14 +2709,17 @@ DO_SPE_OP1(fsctuiz);
 DO_SPE_OP1(fsctsf);
 /* evfsctuf */
 DO_SPE_OP1(fsctuf);
-#endif /* defined(TARGET_PPCEMB) */
 
 /*****************************************************************************/
 /* Softmmu support */
 #if !defined (CONFIG_USER_ONLY)
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
@@ -2751,7 +2741,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr)
 {
     TranslationBlock *tb;
     CPUState *saved_env;
-    target_phys_addr_t pc;
+    unsigned long pc;
     int ret;
 
     /* XXX: hack to restore env in all cases, even if not called from
@@ -2762,7 +2752,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr)
     if (unlikely(ret != 0)) {
         if (likely(retaddr)) {
             /* now we have a real cpu fault */
-            pc = (target_phys_addr_t)(unsigned long)retaddr;
+            pc = (unsigned long)retaddr;
             tb = tb_find_pc(pc);
             if (likely(tb)) {
                 /* the PC is inside the translated code. It means that we have
@@ -2793,9 +2783,9 @@ void do_load_6xx_tlb (int is_code)
     way = (env->spr[SPR_SRR1] >> 17) & 1;
 #if defined (DEBUG_SOFTWARE_TLB)
     if (loglevel != 0) {
-        fprintf(logfile, "%s: EPN %08lx %08lx PTE0 %08lx PTE1 %08lx way %d\n",
-                __func__, (unsigned long)T0, (unsigned long)EPN,
-                (unsigned long)CMP, (unsigned long)RPN, way);
+        fprintf(logfile, "%s: EPN " TDX " " ADDRX " PTE0 " ADDRX
+                " PTE1 " ADDRX " way %d\n",
+                __func__, T0, EPN, CMP, RPN, way);
     }
 #endif
     /* Store this TLB */
@@ -2814,9 +2804,9 @@ void do_load_74xx_tlb (int is_code)
     way = env->spr[SPR_TLBMISS] & 0x3;
 #if defined (DEBUG_SOFTWARE_TLB)
     if (loglevel != 0) {
-        fprintf(logfile, "%s: EPN %08lx %08lx PTE0 %08lx PTE1 %08lx way %d\n",
-                __func__, (unsigned long)T0, (unsigned long)EPN,
-                (unsigned long)CMP, (unsigned long)RPN, way);
+        fprintf(logfile, "%s: EPN " TDX " " ADDRX " PTE0 " ADDRX
+                " PTE1 " ADDRX " way %d\n",
+                __func__, T0, EPN, CMP, RPN, way);
     }
 #endif
     /* Store this TLB */
@@ -2930,7 +2920,7 @@ void do_4xx_tlbwe_hi (void)
 
 #if defined (DEBUG_SOFTWARE_TLB)
     if (loglevel != 0) {
-        fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, T0, T1);
+        fprintf(logfile, "%s T0 " TDX " T1 " TDX "\n", __func__, T0, T1);
     }
 #endif
     T0 &= 0x3F;
@@ -2999,7 +2989,7 @@ void do_4xx_tlbwe_lo (void)
 
 #if defined (DEBUG_SOFTWARE_TLB)
     if (loglevel != 0) {
-        fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, T0, T1);
+        fprintf(logfile, "%s T0 " TDX " T1 " TDX "\n", __func__, T0, T1);
     }
 #endif
     T0 &= 0x3F;
@@ -3032,7 +3022,7 @@ void do_440_tlbwe (int word)
 
 #if defined (DEBUG_SOFTWARE_TLB)
     if (loglevel != 0) {
-        fprintf(logfile, "%s word %d T0 " REGX " T1 " REGX "\n",
+        fprintf(logfile, "%s word %d T0 " TDX " T1 " TDX "\n",
                 __func__, word, T0, T1);
     }
 #endif
This page took 0.044921 seconds and 4 git commands to generate.