qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: Petar Jovanovic <petar.jovanovic@rt-rk.com>, qemu-devel@nongnu.org
Cc: petar.jovanovic@imgtec.com, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH 2/2] target-mips: implement UserLocal Register
Date: Sat, 17 May 2014 11:11:07 -0700	[thread overview]
Message-ID: <5377A63B.7050308@twiddle.net> (raw)
In-Reply-To: <1400264014-78911-3-git-send-email-petar.jovanovic@rt-rk.com>

On 05/16/2014 11:13 AM, Petar Jovanovic wrote:
> +target_ulong helper_rdhwr_ul(CPUMIPSState *env)
> +{
> +    if ((env->hflags & MIPS_HFLAG_CP0) ||
> +        (env->CP0_HWREna & (1 << 29))) {
> +        return env->CP0_UserLocal;
> +    } else {
> +        helper_raise_exception(env, EXCP_RI);
> +    }
> +
> +    return 0;
> +}
> +

You shouldn't need a helper at all.  We're supposed to check all of these
sorts of permissions at translation time, so you should be able to issue a
load or an exception directly from the translator.

> +            if (env->CP0_Config3 & (1 << CP0C3_ULRI)) {

What is this check, and why isn't it present in ctx->hflags?

> +                tcg_gen_ld_tl(arg, cpu_env,
> +                              offsetof(CPUMIPSState, CP0_UserLocal));
> +                tcg_gen_ext32s_tl(arg, arg);

One operation: tcg_gen_ld32s_tl.

> #else
> -        /* XXX: Some CPUs implement this in hardware.
> -           Not supported yet. */
> +        save_cpu_state(ctx, 1);
> +        gen_helper_rdhwr_ul(t0, cpu_env);
> +        gen_store_gpr(t0, rt);
> +        break;
>  #endif
>  

This should be at least partially merged with the user-only tls_value code.


r~

  reply	other threads:[~2014-05-17 18:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-16 18:13 [Qemu-devel] [PATCH 0/2] implementation of UserLocal register for MIPS Petar Jovanovic
2014-05-16 18:13 ` [Qemu-devel] [PATCH 1/2] target-mips: pass CPUMIPSState to gen_mfc0/mtc0/dmfc0/dmtc0 Petar Jovanovic
2014-05-17 18:03   ` Richard Henderson
2014-05-16 18:13 ` [Qemu-devel] [PATCH 2/2] target-mips: implement UserLocal Register Petar Jovanovic
2014-05-17 18:11   ` Richard Henderson [this message]
2014-05-22  0:03   ` James Hogan
2014-05-22  0:19   ` James Hogan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5377A63B.7050308@twiddle.net \
    --to=rth@twiddle.net \
    --cc=aurelien@aurel32.net \
    --cc=petar.jovanovic@imgtec.com \
    --cc=petar.jovanovic@rt-rk.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).