Patchwork [v2,6/8] SPARC64: Add UA2007 ASI_BLK_AIU[PS]L? ASIs for stfa

login
register
mail settings
Submitter Tsuneo Saito
Date July 14, 2011, 9:41 a.m.
Message ID <1310636503-8956-7-git-send-email-tsnsaito@gmail.com>
Download mbox | patch
Permalink /patch/104663/
State New
Headers show

Comments

Tsuneo Saito - July 14, 2011, 9:41 a.m.
Support UA2007 block store ASIs for stfa instructions.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
---
 target-sparc/op_helper.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
Artyom Tarasenko - July 14, 2011, 8:46 p.m.
On Thu, Jul 14, 2011 at 11:41 AM, Tsuneo Saito <tsnsaito@gmail.com> wrote:
> Support UA2007 block store ASIs for stfa instructions.
>
> Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
> ---
>  target-sparc/op_helper.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
> index b76ffb6..4faa709 100644
> --- a/target-sparc/op_helper.c
> +++ b/target-sparc/op_helper.c
> @@ -3424,6 +3424,10 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
>         }
>
>         return;
> +    case 0x16: /* UA2007 Block load primary, user privilege */
> +    case 0x17: /* UA2007 Block load secondary, user privilege */
> +    case 0x1e: /* UA2007 Block load primary LE, user privilege */
> +    case 0x1f: /* UA2007 Block load secondary LE, user privilege */

shouldn't these be added to the list in is_translating_asi() ?

>     case 0x70: // Block store primary, user privilege
>     case 0x71: // Block store secondary, user privilege
>         if (rd & 7) {
> @@ -3433,7 +3437,7 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
>         helper_check_align(addr, 0x3f);
>         for (i = 0; i < 16; i++) {
>             val = *(uint32_t *)&env->fpr[rd++];
> -            helper_st_asi(addr, val, asi & 0x1f, 4);
> +            helper_st_asi(addr, val, asi & 0x19, 4);
>             addr += 4;
>         }
>
> --
> 1.7.5.4
>
>
>
Tsuneo Saito - July 14, 2011, 11:21 p.m.
At Thu, 14 Jul 2011 22:46:30 +0200,
Artyom Tarasenko wrote:
> On Thu, Jul 14, 2011 at 11:41 AM, Tsuneo Saito <tsnsaito@gmail.com> wrote:
> > Support UA2007 block store ASIs for stfa instructions.
> >
> > Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
> > ---
> >  target-sparc/op_helper.c |    6 +++++-
> >  1 files changed, 5 insertions(+), 1 deletions(-)
> >
> > diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
> > index b76ffb6..4faa709 100644
> > --- a/target-sparc/op_helper.c
> > +++ b/target-sparc/op_helper.c
> > @@ -3424,6 +3424,10 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
> >         }
> >
> >         return;
> > +    case 0x16: /* UA2007 Block load primary, user privilege */
> > +    case 0x17: /* UA2007 Block load secondary, user privilege */
> > +    case 0x1e: /* UA2007 Block load primary LE, user privilege */
> > +    case 0x1f: /* UA2007 Block load secondary LE, user privilege */
> 
> shouldn't these be added to the list in is_translating_asi() ?

Ah yes, that's right!

---- 
Tsuneo Saito <tsnsaito@gmail.com>

Patch

diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index b76ffb6..4faa709 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -3424,6 +3424,10 @@  void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
         }
 
         return;
+    case 0x16: /* UA2007 Block load primary, user privilege */
+    case 0x17: /* UA2007 Block load secondary, user privilege */
+    case 0x1e: /* UA2007 Block load primary LE, user privilege */
+    case 0x1f: /* UA2007 Block load secondary LE, user privilege */
     case 0x70: // Block store primary, user privilege
     case 0x71: // Block store secondary, user privilege
         if (rd & 7) {
@@ -3433,7 +3437,7 @@  void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
         helper_check_align(addr, 0x3f);
         for (i = 0; i < 16; i++) {
             val = *(uint32_t *)&env->fpr[rd++];
-            helper_st_asi(addr, val, asi & 0x1f, 4);
+            helper_st_asi(addr, val, asi & 0x19, 4);
             addr += 4;
         }