Re: [kvm-unit-tests PATCH v1 1/6] s390x: initial infrastructure

David Hildenbrand
2017-05-16T07:54:45Z

On 15.05.2017 11:19, Christian Borntraeger wrote:
> Nice to see somebody doing this for s390x.
>
>
> On 05/12/2017 12:58 PM, David Hildenbrand wrote:
> [...]
>
>> diff --git a/s390x/Makefile b/s390x/Makefile
>> new file mode 100644
>> index 0000000..f9468bb
>> --- /dev/null
>> +++ b/s390x/Makefile
>> @@ -0,0 +1,32 @@
>> +all: test_cases
>> +
>> +test_cases: $(tests)
>> +
>> +CFLAGS += -std=gnu99
>> +CFLAGS += -ffreestanding
>> +CFLAGS += -Wextra
>> +CFLAGS += -I lib
>> +CFLAGS += -O2
>> +CFLAGS += -msoft-float
>
>
> If you enable the AFP register control bit in your startup code, you can probably
> avoid the soft-float thing.
>

Looks like we can drop that completely.

a) no floating point operations are used either way.

b) adding a very basic division results in

static void test_fp(void)
{
double a, b;

b = 6.5;
a = 2.0;

b = b / a;

report("test fp", b == 3.25);
}

(compiled with -O0)

s390x/selftest.o: In function `test_fp':
/home/dhildenb/git/kvm-unit-tests/s390x/selftest.c:21: undefined
reference to `__divdf3'
/home/dhildenb/git/kvm-unit-tests/s390x/selftest.c:23: undefined
reference to `__eqdf2'

So we would need a soft float lib (as we're using -nostdlib)

c) dropping -msoft-float

A DDB (DIVIDE long BFP) is generated. That seems to work under TCG
without any exception. I assume the check for AFP-register control is
missing. I assume, that test would not pass under KVM.

For now I will simply drop -msoft-float.

Thanks!

--

Thanks,

David