]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
pc-bios/s390-ccw: get LOADPARM stored in SCP Read Info
authorFarhan Ali <alifm@linux.vnet.ibm.com>
Wed, 30 Nov 2016 19:22:07 +0000 (14:22 -0500)
committerCornelia Huck <cornelia.huck@de.ibm.com>
Tue, 2 May 2017 13:08:54 +0000 (15:08 +0200)
Obtain the loadparm value stored in SCP Read Info by performing
a SCLP Read Info request.

Rename sclp-ascii.c to sclp.c to reflect the changed scope of
the file.

Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
pc-bios/s390-ccw/Makefile
pc-bios/s390-ccw/s390-ccw.h
pc-bios/s390-ccw/sclp.c [moved from pc-bios/s390-ccw/sclp-ascii.c with 87% similarity]
pc-bios/s390-ccw/sclp.h

index 0339c247898c50629018e51c6a26102fe2b1ed38..79a46b67356ff4a61dd77ac514da9656a671f950 100644 (file)
@@ -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
index 4e0aab27d323a06ff89a4af6a04e54f8c408327a..903d2ce81688cf75dba529c97bd559e36f3e9f76 100644 (file)
@@ -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,
similarity index 87%
rename from pc-bios/s390-ccw/sclp-ascii.c
rename to pc-bios/s390-ccw/sclp.c
index dc1c3e4f4df01a9b3dd5a68fff16c883216e80f6..a1639baed7fb3106f41dc2d5f6272852f8b9e3ca 100644 (file)
@@ -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);
+    }
+}
index 3cbfb789307698a72c26c2fd2c410044e2e10c94..0dd987ff5dc4969c111c10295691cf9e9fe0bbf9 100644 (file)
@@ -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 {