tests/tcg/s390x: Enable the multiarch system tests
Multiarch tests are written in C and need support for printing characters. Instead of implementing the runtime from scratch, just reuse the pc-bios/s390-ccw one. Run tests with -nographic in order to enable SCLP (enable this for the existing tests as well, since it does not hurt). Use the default linker script for the new tests. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230511114651.439872-3-iii@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
f8d7c90f83
commit
c2485ea402
@ -1,28 +1,40 @@
|
||||
S390X_SRC=$(SRC_PATH)/tests/tcg/s390x
|
||||
VPATH+=$(S390X_SRC)
|
||||
QEMU_OPTS=-action panic=exit-failure -kernel
|
||||
QEMU_OPTS=-action panic=exit-failure -nographic -kernel
|
||||
LINK_SCRIPT=$(S390X_SRC)/softmmu.ld
|
||||
LDFLAGS=-nostdlib -static -Wl,-T$(LINK_SCRIPT) -Wl,--build-id=none
|
||||
CFLAGS+=-ggdb -O0
|
||||
LDFLAGS=-nostdlib -static
|
||||
|
||||
%.o: %.S
|
||||
$(CC) -march=z13 -m64 -c $< -o $@
|
||||
|
||||
%: %.o $(LINK_SCRIPT)
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -march=z13 -m64 -c $< -o $@
|
||||
|
||||
%: %.o
|
||||
$(CC) $< -o $@ $(LDFLAGS)
|
||||
|
||||
TESTS += unaligned-lowcore
|
||||
TESTS += bal
|
||||
TESTS += sam
|
||||
TESTS += lpsw
|
||||
TESTS += lpswe-early
|
||||
TESTS += ssm-early
|
||||
TESTS += stosm-early
|
||||
TESTS += exrl-ssm-early
|
||||
ASM_TESTS = \
|
||||
bal \
|
||||
exrl-ssm-early \
|
||||
sam \
|
||||
lpsw \
|
||||
lpswe-early \
|
||||
ssm-early \
|
||||
stosm-early \
|
||||
unaligned-lowcore
|
||||
|
||||
include $(S390X_SRC)/pgm-specification.mak
|
||||
$(PGM_SPECIFICATION_TESTS): pgm-specification-softmmu.o
|
||||
$(PGM_SPECIFICATION_TESTS): LDFLAGS+=pgm-specification-softmmu.o
|
||||
TESTS += $(PGM_SPECIFICATION_TESTS)
|
||||
ASM_TESTS += $(PGM_SPECIFICATION_TESTS)
|
||||
|
||||
# We don't currently support the multiarch system tests
|
||||
undefine MULTIARCH_TESTS
|
||||
$(ASM_TESTS): LDFLAGS += -Wl,-T$(LINK_SCRIPT) -Wl,--build-id=none
|
||||
$(ASM_TESTS): $(LINK_SCRIPT)
|
||||
TESTS += $(ASM_TESTS)
|
||||
|
||||
S390X_MULTIARCH_RUNTIME_OBJS = head64.o console.o $(MINILIB_OBJS)
|
||||
$(MULTIARCH_TESTS): $(S390X_MULTIARCH_RUNTIME_OBJS)
|
||||
$(MULTIARCH_TESTS): LDFLAGS += $(S390X_MULTIARCH_RUNTIME_OBJS)
|
||||
$(MULTIARCH_TESTS): CFLAGS += $(MINILIB_INC)
|
||||
memory: CFLAGS += -DCHECK_UNALIGNED=0
|
||||
|
12
tests/tcg/s390x/console.c
Normal file
12
tests/tcg/s390x/console.c
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Console code for multiarch tests.
|
||||
* Reuses the pc-bios/s390-ccw implementation.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#include "../../../pc-bios/s390-ccw/sclp.c"
|
||||
|
||||
void __sys_outc(char c)
|
||||
{
|
||||
write(1, &c, sizeof(c));
|
||||
}
|
31
tests/tcg/s390x/head64.S
Normal file
31
tests/tcg/s390x/head64.S
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Startup code for multiarch tests.
|
||||
* Reuses the pc-bios/s390-ccw implementation.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#define main main_pre
|
||||
#include "../../../pc-bios/s390-ccw/start.S"
|
||||
#undef main
|
||||
|
||||
main_pre:
|
||||
aghi %r15,-160 /* reserve stack for C code */
|
||||
brasl %r14,sclp_setup
|
||||
brasl %r14,main
|
||||
larl %r1,success_psw /* check main() return code */
|
||||
ltgr %r2,%r2
|
||||
je 0f
|
||||
larl %r1,failure_psw
|
||||
0:
|
||||
lpswe 0(%r1)
|
||||
|
||||
.align 8
|
||||
success_psw:
|
||||
.quad 0x2000180000000,0xfff /* see is_special_wait_psw() */
|
||||
failure_psw:
|
||||
.quad 0x2000180000000,0 /* disabled wait */
|
||||
|
||||
.section .bss
|
||||
.align 0x1000
|
||||
stack:
|
||||
.skip 0x8000
|
Loading…
x
Reference in New Issue
Block a user