ARM11_RC_WDTR,
     ARM11_RC_RDTR,
 
-
     ARM11_RC_MAX,
 };
 
        /* MRC p14,0,r?,c0,c5,0 */
        arm11_run_instr_data_to_core1(arm11, 0xee100e15 | (i << 12), R(RX + i));
 
-//     DEBUG("RESTORE R%d %08x", i, R(RX + i));
+//     DEBUG("RESTORE R" ZU " %08x", i, R(RX + i));
     }}
 
     arm11_run_instr_data_finish(arm11);
     if (!current)
        R(PC) = address;
 
-    INFO("RESUME PC %08x", R(PC));
+    INFO("RESUME PC %08x%s", R(PC), !current ? "!" : "");
 
     /* clear breakpoints/watchpoints and VCR*/
     arm11_sc7_clear_vbw(arm11);
     
            arm11_sc7_run(arm11, brp, asizeof(brp));
 
-           DEBUG("Add BP %zd at %08x", brp_num, bp->address);
+           DEBUG("Add BP " ZU " at %08x", brp_num, bp->address);
 
            brp_num++;
        }
     if (!current)
        R(PC) = address;
 
-    INFO("STEP PC %08x", R(PC));
+    INFO("STEP PC %08x%s", R(PC), !current ? "!" : "");
 
     /** \todo TODO: Thumb not supported here */
 
        ARM11_REGCACHE_COUNT != asizeof(arm11_reg_defs) ||
        ARM11_REGCACHE_COUNT != ARM11_RC_MAX)
     {
-       ERROR("arm11->reg_values inconsistent (%d %zd %zd %d)", ARM11_REGCACHE_COUNT, asizeof(arm11->reg_values), asizeof(arm11_reg_defs), ARM11_RC_MAX);
+       ERROR("arm11->reg_values inconsistent (%d " ZU " " ZU " %d)", ARM11_REGCACHE_COUNT, asizeof(arm11->reg_values), asizeof(arm11_reg_defs), ARM11_RC_MAX);
        exit(-1);
     }
 
 
     type * variable = calloc(1, sizeof(type) * items)
 
 
+/* Don't know exactly when %zu was added to glibc (CVS says in 1998).
+   Assume for now that its between GCC versions 3.x.x and 4.x.x .
+   MinGW's GCC 3.4.5 comes with a glibc that doesn't support it.
+*/
+
+#if __GNUC__ > 3
+#define ZU             "%zu"
+#else
+#define ZU             "%u"
+#endif
+
+
 #define ARM11_REGCACHE_MODEREGS                0
 #define ARM11_REGCACHE_FREGS           0