Patchwork sparc64: switch to MMU global registers in more MMU related traps

login
register
mail settings
Submitter Igor V. Kovalenko
Date Jan. 3, 2010, 12:01 p.m.
Message ID <20100103120115.29313.1566.stgit@skyserv>
Download mbox | patch
Permalink /patch/42035/
State New
Headers show

Comments

Igor V. Kovalenko - Jan. 3, 2010, 12:01 p.m.
From: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>

- extended range of MMU related traps which use MMU global registers,
  as listed in Ultrasparc-IIi document
- no visible changes, since emulation do not cause added traps

Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
---
 target-sparc/op_helper.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Blue Swirl - Jan. 3, 2010, 12:24 p.m.
Thanks, applied.


On Sun, Jan 3, 2010 at 12:01 PM, Igor V. Kovalenko
<igor.v.kovalenko@gmail.com> wrote:
> From: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
>
> - extended range of MMU related traps which use MMU global registers,
>  as listed in Ultrasparc-IIi document
> - no visible changes, since emulation do not cause added traps
>
> Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
> ---
>  target-sparc/op_helper.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
> index c3cc0a4..362a557 100644
> --- a/target-sparc/op_helper.c
> +++ b/target-sparc/op_helper.c
> @@ -3447,10 +3447,10 @@ void do_interrupt(CPUState *env)
>         change_pstate(PS_PEF | PS_PRIV | PS_IG);
>         break;
>     case TT_TFAULT:
> -    case TT_TMISS:
>     case TT_DFAULT:
> -    case TT_DMISS:
> -    case TT_DPROT:
> +    case TT_TMISS ... TT_TMISS+3:
> +    case TT_DMISS ... TT_DMISS+3:
> +    case TT_DPROT ... TT_DPROT+3:
>         change_pstate(PS_PEF | PS_PRIV | PS_MG);
>         break;
>     default:
>
>
>
>

Patch

diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index c3cc0a4..362a557 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -3447,10 +3447,10 @@  void do_interrupt(CPUState *env)
         change_pstate(PS_PEF | PS_PRIV | PS_IG);
         break;
     case TT_TFAULT:
-    case TT_TMISS:
     case TT_DFAULT:
-    case TT_DMISS:
-    case TT_DPROT:
+    case TT_TMISS ... TT_TMISS+3:
+    case TT_DMISS ... TT_DMISS+3:
+    case TT_DPROT ... TT_DPROT+3:
         change_pstate(PS_PEF | PS_PRIV | PS_MG);
         break;
     default: