diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile index 0339c24789..79a46b6735 100644 --- a/pc-bios/s390-ccw/Makefile +++ b/pc-bios/s390-ccw/Makefile @@ -9,7 +9,7 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw) .PHONY : all clean build-all -OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o virtio-scsi.o +OBJECTS = start.o main.o bootmap.o sclp.o virtio.o virtio-scsi.o QEMU_CFLAGS := $(filter -W%, $(QEMU_CFLAGS)) QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -msoft-float QEMU_CFLAGS += -march=z900 -fPIE -fno-strict-aliasing diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index 4e0aab27d3..903d2ce816 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -63,9 +63,10 @@ void panic(const char *string); void write_subsystem_identification(void); extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); -/* sclp-ascii.c */ +/* sclp.c */ void sclp_print(const char *string); void sclp_setup(void); +void sclp_get_loadparm_ascii(char *loadparm); /* virtio.c */ unsigned long virtio_load_direct(ulong rec_list1, ulong rec_list2, diff --git a/pc-bios/s390-ccw/sclp-ascii.c b/pc-bios/s390-ccw/sclp.c similarity index 87% rename from pc-bios/s390-ccw/sclp-ascii.c rename to pc-bios/s390-ccw/sclp.c index dc1c3e4f4d..a1639baed7 100644 --- a/pc-bios/s390-ccw/sclp-ascii.c +++ b/pc-bios/s390-ccw/sclp.c @@ -80,3 +80,15 @@ void sclp_print(const char *str) sclp_service_call(SCLP_CMD_WRITE_EVENT_DATA, sccb); } + +void sclp_get_loadparm_ascii(char *loadparm) +{ + + ReadInfo *sccb = (void *)_sccb; + + memset((char *)_sccb, 0, sizeof(ReadInfo)); + sccb->h.length = sizeof(ReadInfo); + if (!sclp_service_call(SCLP_CMDW_READ_SCP_INFO, sccb)) { + ebcdic_to_ascii((char *) sccb->loadparm, loadparm, 8); + } +} diff --git a/pc-bios/s390-ccw/sclp.h b/pc-bios/s390-ccw/sclp.h index 3cbfb78930..0dd987ff5d 100644 --- a/pc-bios/s390-ccw/sclp.h +++ b/pc-bios/s390-ccw/sclp.h @@ -55,6 +55,8 @@ typedef struct ReadInfo { SCCBHeader h; uint16_t rnmax; uint8_t rnsize; + uint8_t reserved[13]; + uint8_t loadparm[8]; } __attribute__((packed)) ReadInfo; typedef struct SCCB {