diff mbox

[1/6] cris: Add a CRISv32 default "any" CPU for user mode emulation

Message ID 1391310292-18008-2-git-send-email-edgar.iglesias@gmail.com
State New
Headers show

Commit Message

Edgar E. Iglesias Feb. 2, 2014, 3:04 a.m. UTC
From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
---
 target-cris/cpu.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Riku Voipio Feb. 3, 2014, 11:02 a.m. UTC | #1
On Sun, Feb 02, 2014 at 03:04:47AM +0000, edgar.iglesias@gmail.com wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>

This is not a regression, but my static busybox sample I have fails to
run with -cpu crisv32. -cpu crisv11 works a little better, but most
syscalls will blow up. Now it is entirely possible my cris busybox binary is
broken, as I have no hw to test it...

./cris-linux-user/qemu-cris -cpu crisv32 /home/voipio/linaro/qemu-smoke/cris/busybox echo hi

PC=80138 CCS=e8 btaken=1 btarget=80138
cc_op=8 cc_src=4 cc_dest=-150999004 cc_result=f6fff020 cc_mask=f
$r0=001dca60 $r1=00000000 $r2=00000000 $r3=00000000 
$r4=00000000 $r5=00000000 $r6=00000000 $r7=00000000 
$r8=00000000 $r9=0012dc50 $r10=000806a6 $r11=00000003 
$r12=f6fff02c $r13=00001966 $sp=f6fff020 $acr=f6fff01c 

special regs:
$bz=00000000 $vr=00000020 $pid=00000000 $srs=00000000 
$wz=00000000 $exs=00000000 $eda=001dca60 $mof=00000000 
$dz=00000000 $ebp=00000000 $erp=00000000 $srp=00000000 
$nrp=00000000 $ccs=000000e8 $usp=00000000 $spc=00000000 

support function regs bank 0:
s00=00000000 s01=00000000 s02=00000000 s03=00000000 
s04=00000000 s05=00000000 s06=00000000 s07=00000000 
s08=00000000 s09=00000000 s10=00000000 s11=00000000 
s12=00000000 s13=00000000 s14=00000000 s15=00000000 


> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> ---
>  target-cris/cpu.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/target-cris/cpu.c b/target-cris/cpu.c
> index 44301a4..21f1860 100644
> --- a/target-cris/cpu.c
> +++ b/target-cris/cpu.c
> @@ -239,7 +239,14 @@ static const TypeInfo cris_cpu_model_type_infos[] = {
>          .name = TYPE("crisv32"),
>          .parent = TYPE_CRIS_CPU,
>          .class_init = crisv32_cpu_class_init,
> +    },
> +#if defined(CONFIG_USER_ONLY)
> +    {
> +        .name = TYPE("any"),
> +        .parent = TYPE_CRIS_CPU,
> +        .class_init = crisv32_cpu_class_init,
>      }
> +#endif
>  };
>  
>  #undef TYPE
> -- 
> 1.8.3.2
>
Andreas Färber Feb. 3, 2014, 11:44 a.m. UTC | #2
Hi,

Am 02.02.2014 04:04, schrieb edgar.iglesias@gmail.com:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> 
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> ---
>  target-cris/cpu.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/target-cris/cpu.c b/target-cris/cpu.c
> index 44301a4..21f1860 100644
> --- a/target-cris/cpu.c
> +++ b/target-cris/cpu.c
> @@ -239,7 +239,14 @@ static const TypeInfo cris_cpu_model_type_infos[] = {
>          .name = TYPE("crisv32"),
>          .parent = TYPE_CRIS_CPU,
>          .class_init = crisv32_cpu_class_init,
> +    },
> +#if defined(CONFIG_USER_ONLY)
> +    {
> +        .name = TYPE("any"),
> +        .parent = TYPE_CRIS_CPU,
> +        .class_init = crisv32_cpu_class_init,
>      }

If this model is supposed to be exactly the same as crisv32, I would
recommend to make this an alias handled in CRISCPU::class_by_name()
rather than a distinct QOM type.

Regards,
Andreas

> +#endif
>  };
>  
>  #undef TYPE
Edgar E. Iglesias Feb. 3, 2014, 12:12 p.m. UTC | #3
On Mon, Feb 03, 2014 at 01:02:34PM +0200, Riku Voipio wrote:
> On Sun, Feb 02, 2014 at 03:04:47AM +0000, edgar.iglesias@gmail.com wrote:
> > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> 
> This is not a regression, but my static busybox sample I have fails to
> run with -cpu crisv32. -cpu crisv11 works a little better, but most
> syscalls will blow up. Now it is entirely possible my cris busybox binary is
> broken, as I have no hw to test it...

Hi Riku,

The CRISv10 class of CPUs (8, 9, 10, 11) are very different from the
CRISv32. There is some binary compatibility and more ASM compat but
they should really be seen as different archs.

Not sure what kind of binary you have but if you want I can provide
busybox for both v10 and v32. 

Cheers,
Edgar


> 
> ./cris-linux-user/qemu-cris -cpu crisv32 /home/voipio/linaro/qemu-smoke/cris/busybox echo hi
> 
> PC=80138 CCS=e8 btaken=1 btarget=80138
> cc_op=8 cc_src=4 cc_dest=-150999004 cc_result=f6fff020 cc_mask=f
> $r0=001dca60 $r1=00000000 $r2=00000000 $r3=00000000 
> $r4=00000000 $r5=00000000 $r6=00000000 $r7=00000000 
> $r8=00000000 $r9=0012dc50 $r10=000806a6 $r11=00000003 
> $r12=f6fff02c $r13=00001966 $sp=f6fff020 $acr=f6fff01c 
> 
> special regs:
> $bz=00000000 $vr=00000020 $pid=00000000 $srs=00000000 
> $wz=00000000 $exs=00000000 $eda=001dca60 $mof=00000000 
> $dz=00000000 $ebp=00000000 $erp=00000000 $srp=00000000 
> $nrp=00000000 $ccs=000000e8 $usp=00000000 $spc=00000000 
> 
> support function regs bank 0:
> s00=00000000 s01=00000000 s02=00000000 s03=00000000 
> s04=00000000 s05=00000000 s06=00000000 s07=00000000 
> s08=00000000 s09=00000000 s10=00000000 s11=00000000 
> s12=00000000 s13=00000000 s14=00000000 s15=00000000 
> 
> 
> > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> > ---
> >  target-cris/cpu.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/target-cris/cpu.c b/target-cris/cpu.c
> > index 44301a4..21f1860 100644
> > --- a/target-cris/cpu.c
> > +++ b/target-cris/cpu.c
> > @@ -239,7 +239,14 @@ static const TypeInfo cris_cpu_model_type_infos[] = {
> >          .name = TYPE("crisv32"),
> >          .parent = TYPE_CRIS_CPU,
> >          .class_init = crisv32_cpu_class_init,
> > +    },
> > +#if defined(CONFIG_USER_ONLY)
> > +    {
> > +        .name = TYPE("any"),
> > +        .parent = TYPE_CRIS_CPU,
> > +        .class_init = crisv32_cpu_class_init,
> >      }
> > +#endif
> >  };
> >  
> >  #undef TYPE
> > -- 
> > 1.8.3.2
> >
Edgar E. Iglesias Feb. 3, 2014, 1:22 p.m. UTC | #4
On Mon, Feb 03, 2014 at 12:44:03PM +0100, Andreas Färber wrote:
> Hi,
> 
> Am 02.02.2014 04:04, schrieb edgar.iglesias@gmail.com:
> > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > 
> > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> > ---
> >  target-cris/cpu.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/target-cris/cpu.c b/target-cris/cpu.c
> > index 44301a4..21f1860 100644
> > --- a/target-cris/cpu.c
> > +++ b/target-cris/cpu.c
> > @@ -239,7 +239,14 @@ static const TypeInfo cris_cpu_model_type_infos[] = {
> >          .name = TYPE("crisv32"),
> >          .parent = TYPE_CRIS_CPU,
> >          .class_init = crisv32_cpu_class_init,
> > +    },
> > +#if defined(CONFIG_USER_ONLY)
> > +    {
> > +        .name = TYPE("any"),
> > +        .parent = TYPE_CRIS_CPU,
> > +        .class_init = crisv32_cpu_class_init,
> >      }
> 
> If this model is supposed to be exactly the same as crisv32, I would
> recommend to make this an alias handled in CRISCPU::class_by_name()
> rather than a distinct QOM type.
> 

Sounds good, I'll send a v2 of this one.

Cheers,
Edgar
diff mbox

Patch

diff --git a/target-cris/cpu.c b/target-cris/cpu.c
index 44301a4..21f1860 100644
--- a/target-cris/cpu.c
+++ b/target-cris/cpu.c
@@ -239,7 +239,14 @@  static const TypeInfo cris_cpu_model_type_infos[] = {
         .name = TYPE("crisv32"),
         .parent = TYPE_CRIS_CPU,
         .class_init = crisv32_cpu_class_init,
+    },
+#if defined(CONFIG_USER_ONLY)
+    {
+        .name = TYPE("any"),
+        .parent = TYPE_CRIS_CPU,
+        .class_init = crisv32_cpu_class_init,
     }
+#endif
 };
 
 #undef TYPE