25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: cpu_ppc.c,v 1.59 2006/06/24 21:47:23 debug Exp $ |
* $Id: cpu_ppc.c,v 1.61 2006/07/24 21:14:52 debug Exp $ |
29 |
* |
* |
30 |
* PowerPC/POWER CPU emulation. |
* PowerPC/POWER CPU emulation. |
31 |
*/ |
*/ |
116 |
cpu->is_32bit = (cpu->cd.ppc.bits == 32)? 1 : 0; |
cpu->is_32bit = (cpu->cd.ppc.bits == 32)? 1 : 0; |
117 |
|
|
118 |
if (cpu->is_32bit) { |
if (cpu->is_32bit) { |
119 |
|
cpu->run_instr = ppc32_run_instr; |
120 |
cpu->update_translation_table = ppc32_update_translation_table; |
cpu->update_translation_table = ppc32_update_translation_table; |
121 |
cpu->invalidate_translation_caches = |
cpu->invalidate_translation_caches = |
122 |
ppc32_invalidate_translation_caches; |
ppc32_invalidate_translation_caches; |
123 |
cpu->invalidate_code_translation = |
cpu->invalidate_code_translation = |
124 |
ppc32_invalidate_code_translation; |
ppc32_invalidate_code_translation; |
125 |
} else { |
} else { |
126 |
|
cpu->run_instr = ppc_run_instr; |
127 |
cpu->update_translation_table = ppc_update_translation_table; |
cpu->update_translation_table = ppc_update_translation_table; |
128 |
cpu->invalidate_translation_caches = |
cpu->invalidate_translation_caches = |
129 |
ppc_invalidate_translation_caches; |
ppc_invalidate_translation_caches; |
272 |
*valuep = cpu->cd.ppc.msr; |
*valuep = cpu->cd.ppc.msr; |
273 |
|
|
274 |
if (check_for_interrupts && cpu->cd.ppc.msr & PPC_MSR_EE) { |
if (check_for_interrupts && cpu->cd.ppc.msr & PPC_MSR_EE) { |
275 |
if (cpu->cd.ppc.dec_intr_pending) { |
if (cpu->cd.ppc.dec_intr_pending && |
276 |
|
!(cpu->cd.ppc.cpu_type.flags & PPC_NO_DEC)) { |
277 |
ppc_exception(cpu, PPC_EXCEPTION_DEC); |
ppc_exception(cpu, PPC_EXCEPTION_DEC); |
278 |
cpu->cd.ppc.dec_intr_pending = 0; |
cpu->cd.ppc.dec_intr_pending = 0; |
279 |
} else if (cpu->cd.ppc.irq_asserted) |
} else if (cpu->cd.ppc.irq_asserted) |