Re: [Qemu-devel] [PATCH v4 26/49] tests/tcg: move ARM specific tests into subdir

2018-05-18 Thread Alex Bennée

Philippe Mathieu-Daudé  writes:

> On 05/17/2018 02:46 PM, Alex Bennée wrote:
>> These only need to be built for ARM guests.
>>
>> Signed-off-by: Alex Bennée 
>> Reviewed-by: Thomas Huth 
>> Reviewed-by: Philippe Mathieu-Daudé 
>> Tested-by: Philippe Mathieu-Daudé 
>> Reviewed-by: Richard Henderson 
>>
>> ---
>> v2
>>   - do VPATH manipulation in tests/tcg/arm/Makefile.target
>>   - merge with fix hello-arm test
>> v4
>>   - update MAINTAINERS
>> ---
>>  MAINTAINERS   |  1 +
>>  tests/tcg/README  |  9 -
>>  tests/tcg/arm/Makefile.target | 13 +
>>  tests/tcg/arm/README  | 11 +++
>>  tests/tcg/{ => arm}/hello-arm.c   |  0
>>  tests/tcg/{ => arm}/test-arm-iwmmxt.s |  0
>>  6 files changed, 25 insertions(+), 9 deletions(-)
>>  create mode 100644 tests/tcg/arm/Makefile.target
>>  create mode 100644 tests/tcg/arm/README
>>  rename tests/tcg/{ => arm}/hello-arm.c (100%)
>>  rename tests/tcg/{ => arm}/test-arm-iwmmxt.s (100%)
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 17b9fc0fbe..4e331c4db4 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -135,6 +135,7 @@ M: Peter Maydell 
>>  L: qemu-...@nongnu.org
>>  S: Maintained
>>  F: target/arm/
>> +F: tests/tcg/arm/
>>  F: hw/arm/
>>  F: hw/cpu/a*mpcore.c
>>  F: include/hw/cpu/a*mpcore.h
>> diff --git a/tests/tcg/README b/tests/tcg/README
>> index 469504c4cb..625f2326e6 100644
>> --- a/tests/tcg/README
>> +++ b/tests/tcg/README
>> @@ -5,15 +5,6 @@ or they are architecture specific.
>>
>>
>>
>> -ARM
>> -===
>> -
>> -hello-arm
>> --
>> -
>> -test-arm-iwmmxt
>> 
>> -
>>  MIPS
>>  
>>
>> diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
>> new file mode 100644
>> index 00..bc6962ecc6
>> --- /dev/null
>> +++ b/tests/tcg/arm/Makefile.target
>> @@ -0,0 +1,13 @@
>> +# -*- Mode: makefile -*-
>> +#
>> +# ARM - included from tests/tcg/Makefile.target
>> +#
>> +
>> +ARM_SRC=$(SRC_PATH)/tests/tcg/arm
>> +
>> +# Set search path for all sources
>> +VPATH   += $(ARM_SRC)
>> +
>> +
>> +hello-arm: CFLAGS+=-marm -ffreestanding
>
> So we are only testing the ARMv7, but linux-user provides ARMv5 and
> ARMv6 cpus.
>
> There are still boards shipped with those cpus, so I think QEMU will
> still be useful nowadays with those older archs.
> Can we consider add tests for them?
> If so, I volunteer to prepare Docker cross images :)

Hmm OK but we'd a bunch of new tests and something like this:

modified   tests/tcg/arm/Makefile.target
@@ -8,13 +8,23 @@ ARM_SRC=$(SRC_PATH)/tests/tcg/arm
 # Set search path for all sources
 VPATH  += $(ARM_SRC)

-ARM_TESTS=hello-arm test-arm-iwmmxt
+ARM_TESTS=hello-arm hello-arm-v6 test-arm-iwmmxt

 TESTS += $(ARM_TESTS) fcvt

 hello-arm: CFLAGS+=-marm -ffreestanding
 hello-arm: LDFLAGS+=-nostdlib

+hello-arm-v6: CFLAGS+=-march=armv6 -ffreestanding
+hello-arm-v6: LDFLAGS+=-nostdlib
+hello-arm-v6: hello-arm.c
+   $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
+
+run-hello-arm-v6: hello-arm-v6
+   $(call quiet-command, \
+   timeout $(TIMEOUT) $(QEMU) -cpu arm926 $< > $<.out, \
+   "TEST", "$< on $(TARGET_NAME)")
+

Of course that fails because:

/home/alex/lsrc/qemu/qemu.git/tests/tcg/arm/hello-arm.c:106:1: sorry, 
unimplemented: Thumb-1 hard-float VFP ABI
 _syscall1(int,exit1,int,status);
 ^

I think using external tests like risu is probably better for this sort
of coverage.

>
> arm-linux-user/tests$ ../qemu-arm -cpu arm926 -d in_asm,op sha1
> 
> IN:
> 0x000102ec:  f04f 0b00  mov.wfp, #0
>
> OP:
>  ld_i32 tmp5,env,$0xffec
>  movi_i32 tmp6,$0x0
>  brcond_i32 tmp5,tmp6,lt,$L0
>
>   000102ec  
>  movi_i32 pc,$0x102ec
>  movi_i32 tmp5,$0x1
>  movi_i32 tmp6,$0x200
>  movi_i32 tmp7,$0x1
>  call exception_with_syndrome,$0x0,$0,env,tmp5,tmp6,tmp7
>  set_label $L0
>  exit_tb $0x563aed6cc043
>
> qemu: uncaught target signal 4 (Illegal instruction) - core dumped
> Illegal instruction
>
>> +hello-arm: LDFLAGS+=-nostdlib
>> diff --git a/tests/tcg/arm/README b/tests/tcg/arm/README
>> new file mode 100644
>> index 00..e6307116e2
>> --- /dev/null
>> +++ b/tests/tcg/arm/README
>> @@ -0,0 +1,11 @@
>> +These are ARM specific guest programs
>> +
>> +hello-arm
>> +-
>> +
>> +A very simple inline assembly, write syscall based hello world
>> +
>> +test-arm-iwmmxt
>> +---
>> +
>> +A simple test case for older iwmmxt extended ARMs
>> diff --git a/tests/tcg/hello-arm.c b/tests/tcg/arm/hello-arm.c
>> similarity index 100%
>> rename from tests/tcg/hello-arm.c
>> rename to tests/tcg/arm/hello-arm.c
>> diff --git a/tests/tcg/test-arm-iwmmxt.s b/tests/tcg/arm/test-arm-iwmmxt.s
>> similarity index 100%
>> rename from tests/tcg/test-arm-iwmmxt.s

Re: [Qemu-devel] [PATCH v4 26/49] tests/tcg: move ARM specific tests into subdir

2018-05-18 Thread Philippe Mathieu-Daudé
On 05/17/2018 02:46 PM, Alex Bennée wrote:
> These only need to be built for ARM guests.
> 
> Signed-off-by: Alex Bennée 
> Reviewed-by: Thomas Huth 
> Reviewed-by: Philippe Mathieu-Daudé 
> Tested-by: Philippe Mathieu-Daudé 
> Reviewed-by: Richard Henderson 
> 
> ---
> v2
>   - do VPATH manipulation in tests/tcg/arm/Makefile.target
>   - merge with fix hello-arm test
> v4
>   - update MAINTAINERS
> ---
>  MAINTAINERS   |  1 +
>  tests/tcg/README  |  9 -
>  tests/tcg/arm/Makefile.target | 13 +
>  tests/tcg/arm/README  | 11 +++
>  tests/tcg/{ => arm}/hello-arm.c   |  0
>  tests/tcg/{ => arm}/test-arm-iwmmxt.s |  0
>  6 files changed, 25 insertions(+), 9 deletions(-)
>  create mode 100644 tests/tcg/arm/Makefile.target
>  create mode 100644 tests/tcg/arm/README
>  rename tests/tcg/{ => arm}/hello-arm.c (100%)
>  rename tests/tcg/{ => arm}/test-arm-iwmmxt.s (100%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 17b9fc0fbe..4e331c4db4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -135,6 +135,7 @@ M: Peter Maydell 
>  L: qemu-...@nongnu.org
>  S: Maintained
>  F: target/arm/
> +F: tests/tcg/arm/
>  F: hw/arm/
>  F: hw/cpu/a*mpcore.c
>  F: include/hw/cpu/a*mpcore.h
> diff --git a/tests/tcg/README b/tests/tcg/README
> index 469504c4cb..625f2326e6 100644
> --- a/tests/tcg/README
> +++ b/tests/tcg/README
> @@ -5,15 +5,6 @@ or they are architecture specific.
>  
>  
>  
> -ARM
> -===
> -
> -hello-arm
> --
> -
> -test-arm-iwmmxt
> 
> -
>  MIPS
>  
>  
> diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
> new file mode 100644
> index 00..bc6962ecc6
> --- /dev/null
> +++ b/tests/tcg/arm/Makefile.target
> @@ -0,0 +1,13 @@
> +# -*- Mode: makefile -*-
> +#
> +# ARM - included from tests/tcg/Makefile.target
> +#
> +
> +ARM_SRC=$(SRC_PATH)/tests/tcg/arm
> +
> +# Set search path for all sources
> +VPATH+= $(ARM_SRC)
> +
> +
> +hello-arm: CFLAGS+=-marm -ffreestanding

So we are only testing the ARMv7, but linux-user provides ARMv5 and
ARMv6 cpus.

There are still boards shipped with those cpus, so I think QEMU will
still be useful nowadays with those older archs.
Can we consider add tests for them?
If so, I volunteer to prepare Docker cross images :)

arm-linux-user/tests$ ../qemu-arm -cpu arm926 -d in_asm,op sha1

IN:
0x000102ec:  f04f 0b00  mov.wfp, #0

OP:
 ld_i32 tmp5,env,$0xffec
 movi_i32 tmp6,$0x0
 brcond_i32 tmp5,tmp6,lt,$L0

  000102ec  
 movi_i32 pc,$0x102ec
 movi_i32 tmp5,$0x1
 movi_i32 tmp6,$0x200
 movi_i32 tmp7,$0x1
 call exception_with_syndrome,$0x0,$0,env,tmp5,tmp6,tmp7
 set_label $L0
 exit_tb $0x563aed6cc043

qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Illegal instruction

> +hello-arm: LDFLAGS+=-nostdlib
> diff --git a/tests/tcg/arm/README b/tests/tcg/arm/README
> new file mode 100644
> index 00..e6307116e2
> --- /dev/null
> +++ b/tests/tcg/arm/README
> @@ -0,0 +1,11 @@
> +These are ARM specific guest programs
> +
> +hello-arm
> +-
> +
> +A very simple inline assembly, write syscall based hello world
> +
> +test-arm-iwmmxt
> +---
> +
> +A simple test case for older iwmmxt extended ARMs
> diff --git a/tests/tcg/hello-arm.c b/tests/tcg/arm/hello-arm.c
> similarity index 100%
> rename from tests/tcg/hello-arm.c
> rename to tests/tcg/arm/hello-arm.c
> diff --git a/tests/tcg/test-arm-iwmmxt.s b/tests/tcg/arm/test-arm-iwmmxt.s
> similarity index 100%
> rename from tests/tcg/test-arm-iwmmxt.s
> rename to tests/tcg/arm/test-arm-iwmmxt.s
> 



[Qemu-devel] [PATCH v4 26/49] tests/tcg: move ARM specific tests into subdir

2018-05-17 Thread Alex Bennée
These only need to be built for ARM guests.

Signed-off-by: Alex Bennée 
Reviewed-by: Thomas Huth 
Reviewed-by: Philippe Mathieu-Daudé 
Tested-by: Philippe Mathieu-Daudé 
Reviewed-by: Richard Henderson 

---
v2
  - do VPATH manipulation in tests/tcg/arm/Makefile.target
  - merge with fix hello-arm test
v4
  - update MAINTAINERS
---
 MAINTAINERS   |  1 +
 tests/tcg/README  |  9 -
 tests/tcg/arm/Makefile.target | 13 +
 tests/tcg/arm/README  | 11 +++
 tests/tcg/{ => arm}/hello-arm.c   |  0
 tests/tcg/{ => arm}/test-arm-iwmmxt.s |  0
 6 files changed, 25 insertions(+), 9 deletions(-)
 create mode 100644 tests/tcg/arm/Makefile.target
 create mode 100644 tests/tcg/arm/README
 rename tests/tcg/{ => arm}/hello-arm.c (100%)
 rename tests/tcg/{ => arm}/test-arm-iwmmxt.s (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index 17b9fc0fbe..4e331c4db4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -135,6 +135,7 @@ M: Peter Maydell 
 L: qemu-...@nongnu.org
 S: Maintained
 F: target/arm/
+F: tests/tcg/arm/
 F: hw/arm/
 F: hw/cpu/a*mpcore.c
 F: include/hw/cpu/a*mpcore.h
diff --git a/tests/tcg/README b/tests/tcg/README
index 469504c4cb..625f2326e6 100644
--- a/tests/tcg/README
+++ b/tests/tcg/README
@@ -5,15 +5,6 @@ or they are architecture specific.
 
 
 
-ARM
-===
-
-hello-arm
--
-
-test-arm-iwmmxt

-
 MIPS
 
 
diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
new file mode 100644
index 00..bc6962ecc6
--- /dev/null
+++ b/tests/tcg/arm/Makefile.target
@@ -0,0 +1,13 @@
+# -*- Mode: makefile -*-
+#
+# ARM - included from tests/tcg/Makefile.target
+#
+
+ARM_SRC=$(SRC_PATH)/tests/tcg/arm
+
+# Set search path for all sources
+VPATH  += $(ARM_SRC)
+
+
+hello-arm: CFLAGS+=-marm -ffreestanding
+hello-arm: LDFLAGS+=-nostdlib
diff --git a/tests/tcg/arm/README b/tests/tcg/arm/README
new file mode 100644
index 00..e6307116e2
--- /dev/null
+++ b/tests/tcg/arm/README
@@ -0,0 +1,11 @@
+These are ARM specific guest programs
+
+hello-arm
+-
+
+A very simple inline assembly, write syscall based hello world
+
+test-arm-iwmmxt
+---
+
+A simple test case for older iwmmxt extended ARMs
diff --git a/tests/tcg/hello-arm.c b/tests/tcg/arm/hello-arm.c
similarity index 100%
rename from tests/tcg/hello-arm.c
rename to tests/tcg/arm/hello-arm.c
diff --git a/tests/tcg/test-arm-iwmmxt.s b/tests/tcg/arm/test-arm-iwmmxt.s
similarity index 100%
rename from tests/tcg/test-arm-iwmmxt.s
rename to tests/tcg/arm/test-arm-iwmmxt.s
-- 
2.17.0