[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 15/33] target-alpha: Merge HW_REI and HW_RET impleme
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 15/33] target-alpha: Merge HW_REI and HW_RET implementations. |
Date: |
Thu, 28 Apr 2011 13:50:57 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
target-alpha/translate.c | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 9e1576d..09edb0f 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -2943,14 +2943,24 @@ static ExitStatus translate_one(DisasContext *ctx,
uint32_t insn)
break;
#endif
case 0x1E:
- /* HW_REI (PALcode) */
+ /* HW_RET (PALcode) */
#if defined (CONFIG_USER_ONLY)
goto invalid_opc;
#else
if (!ctx->pal_mode)
goto invalid_opc;
- gen_helper_hw_ret(cpu_ir[rb]);
- break;
+ if (rb == 31) {
+ /* Pre-EV6 CPUs interpreted this as HW_REI, loading the return
+ address from EXC_ADDR. This turns out to be useful for our
+ emulation PALcode, so continue to accept it. */
+ TCGv tmp = tcg_temp_new();
+ tcg_gen_ld_i64(tmp, cpu_env, offsetof(CPUState, exc_addr));
+ gen_helper_hw_ret(tmp);
+ tcg_temp_free(tmp);
+ } else {
+ gen_helper_hw_ret(cpu_ir[rb]);
+ }
+ return EXIT_PC_UPDATED;
#endif
case 0x1F:
/* HW_ST (PALcode) */
--
1.7.4.4
- Re: [Qemu-devel] [PATCH 02/33] gdbserver: Don't deliver TIMER interrupts when SSTEP_NOIRQ either., (continued)
- [Qemu-devel] [PATCH 04/33] pci: Export pci_to_cpu_addr., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 07/33] target-alpha: Enable the alpha-softmmu target., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 08/33] target-alpha: Tidy exception constants., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 06/33] target-alpha: Remove partial support for palcode emulation., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 10/33] target-alpha: Cleanup MMU modes., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 09/33] target-alpha: Rationalize internal processor registers., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 11/33] target-alpha: Fixup translation of PALmode instructions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 13/33] target-alpha: Tidy up arithmetic exceptions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 14/33] target-alpha: Use do_restore_state for arithmetic exceptions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 15/33] target-alpha: Merge HW_REI and HW_RET implementations.,
Richard Henderson <=
- [Qemu-devel] [PATCH 12/33] target-alpha: Add IPRs to be used by the emulation PALcode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 16/33] target-alpha: Implement do_interrupt for system mode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 17/33] target-alpha: Swap shadow registers moving to/from PALmode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 19/33] target-alpha: Use kernel mmu_idx for pal_mode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 18/33] target-alpha: Add various symbolic constants., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 21/33] target-alpha: Disable interrupts properly., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 20/33] target-alpha: All ISA checks to use TB->FLAGS., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 22/33] target-alpha: Implement more CALL_PAL values inline., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 23/33] target-alpha: Implement cpu_alpha_handle_mmu_fault for system mode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 24/33] target-alpha: Remap PIO space for 43-bit KSEG for EV6., Richard Henderson, 2011/04/28