Commit 4e588a4d0e1683488282658c057d4b44976d77d8

Authored by bellard
1 parent a368741b

negative decr fix


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1510 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 3 deletions
hw/ppc.c
... ... @@ -107,13 +107,16 @@ uint32_t cpu_ppc_load_decr (CPUState *env)
107 107 {
108 108 ppc_tb_t *tb_env = env->tb_env;
109 109 uint32_t decr;
  110 + int64_t diff;
110 111  
111   - decr = muldiv64(tb_env->decr_next - qemu_get_clock(vm_clock),
112   - tb_env->tb_freq, ticks_per_sec);
  112 + diff = tb_env->decr_next - qemu_get_clock(vm_clock);
  113 + if (diff >= 0)
  114 + decr = muldiv64(diff, tb_env->tb_freq, ticks_per_sec);
  115 + else
  116 + decr = -muldiv64(-diff, tb_env->tb_freq, ticks_per_sec);
113 117 #if defined(DEBUG_TB)
114 118 printf("%s: 0x%08x\n", __func__, decr);
115 119 #endif
116   -
117 120 return decr;
118 121 }
119 122  
... ...