Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
iii-i authored and huth committed May 16, 2023
1 parent f8d7c90 commit c2485ea
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 14 deletions.
40 changes: 26 additions & 14 deletions tests/tcg/s390x/Makefile.softmmu-target
@@ -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)

$(ASM_TESTS): LDFLAGS += -Wl,-T$(LINK_SCRIPT) -Wl,--build-id=none
$(ASM_TESTS): $(LINK_SCRIPT)
TESTS += $(ASM_TESTS)

# We don't currently support the multiarch system tests
undefine MULTIARCH_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 changes: 12 additions & 0 deletions tests/tcg/s390x/console.c
@@ -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 changes: 31 additions & 0 deletions tests/tcg/s390x/head64.S
@@ -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

0 comments on commit c2485ea

Please sign in to comment.