[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/7] alpha: Implement IMB; add placeholders for
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 1/7] alpha: Implement IMB; add placeholders for other userspace PALcalls. |
Date: |
Sun, 13 Dec 2009 20:28:15 +0100 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Wed, Dec 09, 2009 at 03:38:40PM -0800, Richard Henderson wrote:
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> hw/alpha_palcode.c | 29 +++++++++++++++++++++++++++--
> 1 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/hw/alpha_palcode.c b/hw/alpha_palcode.c
> index c48a297..44b2ca4 100644
> --- a/hw/alpha_palcode.c
> +++ b/hw/alpha_palcode.c
> @@ -1062,6 +1062,16 @@ void call_pal (CPUState *env, int palcode)
>
> qemu_log("%s: palcode %02x\n", __func__, palcode);
> switch (palcode) {
> + case 0x80:
> + /* BPT */
> + qemu_log("BPT\n");
> + /* FIXME: Sends SIGTRAP, si_code=TRAP_BRKPT. */
> + exit(1);
> + case 0x81:
> + /* BUGCHK */
> + qemu_log("BUGCHK\n");
> + /* FIXME: Sends SIGTRAP, si_code=SI_FAULT. */
> + exit(1);
> case 0x83:
> /* CALLSYS */
> qemu_log("CALLSYS n " TARGET_FMT_ld "\n", env->ir[0]);
> @@ -1076,6 +1086,11 @@ void call_pal (CPUState *env, int palcode)
> env->ir[IR_V0] = -ret;
> }
> break;
> + case 0x86:
> + /* IMB */
> + qemu_log("IMB\n");
> + tb_flush(env);
Is it really necessary to flush all the TB here? QEMU should already
discard TB that have been modified.
On other architecture this kind of memory barrier instruction is simply
ignored.
> + break;
> case 0x9E:
> /* RDUNIQUE */
> env->ir[IR_V0] = env->unique;
> @@ -1086,9 +1101,19 @@ void call_pal (CPUState *env, int palcode)
> env->unique = env->ir[IR_A0];
> qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->unique);
> break;
> + case 0xAA:
> + /* GENTRAP */
> + qemu_log("GENTRAP: " TARGET_FMT_lx "\n", env->ir[IR_A0]);
> + /* FIXME: This is supposed to send a signal:
> + SIGFPE:
> + GEN_INTOVF, GEN_INTDIV, GEN_FLTOVF, GEN_FLTDIV,
> + GEN_FLTUND, GEN_FLTINV, GEN_FLTINE, GEN_ROPRAND
> + SIGTRAP:
> + others
> + with various settings of si_code. */
> + exit(1);
> default:
> - qemu_log("%s: unhandled palcode %02x\n",
> - __func__, palcode);
> + qemu_log("%s: unhandled palcode %02x\n", __func__, palcode);
> exit(1);
> }
> }
> --
> 1.6.5.2
>
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH 0/7] Improve alpha-linux userspace emulation, Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 7/7] alpha: Fixes for alpha-linux syscalls., Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 4/7] alpha: Remove bogus DO_TB_FLUSH code from translator., Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 5/7] alpha: Honor the -cpu command line argument., Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 3/7] alpha: Add binfmt entry., Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 2/7] alpha: Drop bogus UNIQ initial value on Linux., Richard Henderson, 2009/12/09
- [Qemu-devel] [PATCH 6/7] alpha: Enable softfloat., Richard Henderson, 2009/12/09
- Re: [Qemu-devel] [PATCH 0/7] Improve alpha-linux userspace emulation, Laurent Desnogues, 2009/12/10