Commit 9b605b9eaee7845353f32aed23e8b9085bfa44ee
1 parent
493ae1f0
Fix ppc32 register dumps on 64-bit hosts.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3723 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
14 additions
and
9 deletions
hw/ppc_oldworld.c
@@ -93,7 +93,8 @@ static int vga_osi_call (CPUState *env) | @@ -93,7 +93,8 @@ static int vga_osi_call (CPUState *env) | ||
93 | /* R6 = x, R7 = y, R8 = visible, R9 = data */ | 93 | /* R6 = x, R7 = y, R8 = visible, R9 = data */ |
94 | break; | 94 | break; |
95 | default: | 95 | default: |
96 | - fprintf(stderr, "unsupported OSI call R5=" REGX "\n", env->gpr[5]); | 96 | + fprintf(stderr, "unsupported OSI call R5=" REGX "\n", |
97 | + (target_ulong)env->gpr[5]); | ||
97 | break; | 98 | break; |
98 | } | 99 | } |
99 | 100 |
target-ppc/cpu.h
@@ -30,7 +30,6 @@ | @@ -30,7 +30,6 @@ | ||
30 | typedef uint64_t ppc_gpr_t; | 30 | typedef uint64_t ppc_gpr_t; |
31 | #define TARGET_GPR_BITS 64 | 31 | #define TARGET_GPR_BITS 64 |
32 | #define TARGET_LONG_BITS 64 | 32 | #define TARGET_LONG_BITS 64 |
33 | -#define REGX "%016" PRIx64 | ||
34 | #define TARGET_PAGE_BITS 12 | 33 | #define TARGET_PAGE_BITS 12 |
35 | 34 | ||
36 | #else /* defined (TARGET_PPC64) */ | 35 | #else /* defined (TARGET_PPC64) */ |
@@ -43,11 +42,9 @@ typedef uint64_t ppc_gpr_t; | @@ -43,11 +42,9 @@ typedef uint64_t ppc_gpr_t; | ||
43 | */ | 42 | */ |
44 | typedef uint64_t ppc_gpr_t; | 43 | typedef uint64_t ppc_gpr_t; |
45 | #define TARGET_GPR_BITS 64 | 44 | #define TARGET_GPR_BITS 64 |
46 | -#define REGX "%08" PRIx64 | ||
47 | #else /* (HOST_LONG_BITS >= 64) */ | 45 | #else /* (HOST_LONG_BITS >= 64) */ |
48 | typedef uint32_t ppc_gpr_t; | 46 | typedef uint32_t ppc_gpr_t; |
49 | #define TARGET_GPR_BITS 32 | 47 | #define TARGET_GPR_BITS 32 |
50 | -#define REGX "%08" PRIx32 | ||
51 | #endif /* (HOST_LONG_BITS >= 64) */ | 48 | #endif /* (HOST_LONG_BITS >= 64) */ |
52 | 49 | ||
53 | #define TARGET_LONG_BITS 32 | 50 | #define TARGET_LONG_BITS 32 |
@@ -72,6 +69,10 @@ typedef uint32_t ppc_gpr_t; | @@ -72,6 +69,10 @@ typedef uint32_t ppc_gpr_t; | ||
72 | 69 | ||
73 | #endif /* defined (TARGET_PPC64) */ | 70 | #endif /* defined (TARGET_PPC64) */ |
74 | 71 | ||
72 | +/* A ppc_gpr_t should not be printed directly as the high bits may be | ||
73 | + garbage. It should always be cast to a target_ulong first. */ | ||
74 | +#define REGX TARGET_FMT_lx | ||
75 | + | ||
75 | #include "cpu-defs.h" | 76 | #include "cpu-defs.h" |
76 | 77 | ||
77 | #define ADDRX TARGET_FMT_lx | 78 | #define ADDRX TARGET_FMT_lx |
target-ppc/helper.c
@@ -2169,8 +2169,9 @@ static always_inline void dump_syscall (CPUState *env) | @@ -2169,8 +2169,9 @@ static always_inline void dump_syscall (CPUState *env) | ||
2169 | { | 2169 | { |
2170 | fprintf(logfile, "syscall r0=0x" REGX " r3=0x" REGX " r4=0x" REGX | 2170 | fprintf(logfile, "syscall r0=0x" REGX " r3=0x" REGX " r4=0x" REGX |
2171 | " r5=0x" REGX " r6=0x" REGX " nip=0x" ADDRX "\n", | 2171 | " r5=0x" REGX " r6=0x" REGX " nip=0x" ADDRX "\n", |
2172 | - env->gpr[0], env->gpr[3], env->gpr[4], | ||
2173 | - env->gpr[5], env->gpr[6], env->nip); | 2172 | + (target_ulong)env->gpr[0], (target_ulong)env->gpr[3], |
2173 | + (target_ulong)env->gpr[4], (target_ulong)env->gpr[5], | ||
2174 | + (target_ulong)env->gpr[6], env->nip); | ||
2174 | } | 2175 | } |
2175 | 2176 | ||
2176 | /* Note that this function should be greatly optimized | 2177 | /* Note that this function should be greatly optimized |
target-ppc/op_helper.c
@@ -2920,7 +2920,8 @@ void do_4xx_tlbwe_hi (void) | @@ -2920,7 +2920,8 @@ void do_4xx_tlbwe_hi (void) | ||
2920 | 2920 | ||
2921 | #if defined (DEBUG_SOFTWARE_TLB) | 2921 | #if defined (DEBUG_SOFTWARE_TLB) |
2922 | if (loglevel != 0) { | 2922 | if (loglevel != 0) { |
2923 | - fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, T0, T1); | 2923 | + fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, |
2924 | + (target_ulong)T0, (target_ulong)T1); | ||
2924 | } | 2925 | } |
2925 | #endif | 2926 | #endif |
2926 | T0 &= 0x3F; | 2927 | T0 &= 0x3F; |
@@ -2989,7 +2990,8 @@ void do_4xx_tlbwe_lo (void) | @@ -2989,7 +2990,8 @@ void do_4xx_tlbwe_lo (void) | ||
2989 | 2990 | ||
2990 | #if defined (DEBUG_SOFTWARE_TLB) | 2991 | #if defined (DEBUG_SOFTWARE_TLB) |
2991 | if (loglevel != 0) { | 2992 | if (loglevel != 0) { |
2992 | - fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, T0, T1); | 2993 | + fprintf(logfile, "%s T0 " REGX " T1 " REGX "\n", __func__, |
2994 | + (targt_ulong)T0, (target_ulong)T1); | ||
2993 | } | 2995 | } |
2994 | #endif | 2996 | #endif |
2995 | T0 &= 0x3F; | 2997 | T0 &= 0x3F; |
@@ -3023,7 +3025,7 @@ void do_440_tlbwe (int word) | @@ -3023,7 +3025,7 @@ void do_440_tlbwe (int word) | ||
3023 | #if defined (DEBUG_SOFTWARE_TLB) | 3025 | #if defined (DEBUG_SOFTWARE_TLB) |
3024 | if (loglevel != 0) { | 3026 | if (loglevel != 0) { |
3025 | fprintf(logfile, "%s word %d T0 " REGX " T1 " REGX "\n", | 3027 | fprintf(logfile, "%s word %d T0 " REGX " T1 " REGX "\n", |
3026 | - __func__, word, T0, T1); | 3028 | + __func__, word, (target_ulong)T0, (target_ulong)T1); |
3027 | } | 3029 | } |
3028 | #endif | 3030 | #endif |
3029 | do_flush_tlbs = 0; | 3031 | do_flush_tlbs = 0; |