Files
s390-tools/zipl/boot/sclp.h
Michael Holzheu b627b8d8e1 Initial s390-tools-2.0.0 import
This commit is based on the s390-tools-1.39.0 version.

Changes on top of s390-tools-1.39.0:

 - Add MIT license to all source files
 - Add LICENSE file
 - Transform REAMDE to README.md (markdown)
 - Add AUTHORS.md file
 - Add CONTRIBUTING.md file
 - Move changelog from README to CHANGELOG.md file

Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
2017-08-21 10:55:40 +02:00

163 lines
3.5 KiB
C

/*
* zipl - zSeries Initial Program Loader tool
*
* Functions for console input and output.
*
* Copyright IBM Corp. 2013, 2017
*
* s390-tools is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#ifndef SCLP_H
#define SCLP_H
#include "libc.h"
#include "s390.h"
/* vector keys and ids */
#define GDS_ID_MDSMU 0x1310
#define GDS_ID_CPMSU 0x1212
#define GDS_ID_TEXTCMD 0x1320
#define GDS_KEY_SELFDEFTEXTMSG 0x31
#define EBC_MDB 0xd4c4c240
#define SCLP_CMD_WRITE_MASK 0x00780005
#define SCLP_CMD_WRITE_DATA 0x00760005
#define SCLP_CMD_READ_INFO 0x00120001
#define SCLP_CMD_READ_INFO2 0x00020001
#define SCLP_CMD_READ_DATA 0x00770005
#define PSW_EXT_MASK 0x00080000ULL
#define PSW_EXT_ADDR 0x80000000ULL
#define PSW_WAIT_MASK 0x010a0000ULL
#define PSW_WAIT_ADDR 0x00000000ULL
#define CTL_SERVICE_SIGNAL 0x0200
#define CTL_CLOCK_COMPARATOR 0x0800
#define SCLP_INIT 0x0
#define SCLP_DISABLE 0x1
#define SCLP_HSA_INIT 0x2
#define SCLP_HSA_INIT_ASYNC 0x3
typedef uint32_t sccb_mask_t;
struct gds_vector {
uint16_t length;
uint16_t gds_id;
} __packed;
struct gds_subvector {
uint8_t length;
uint8_t key;
} __packed;
struct sccb_header {
uint16_t length;
uint8_t function_code;
uint8_t control_mask[3];
uint16_t response_code;
} __packed;
struct evbuf_header {
uint16_t length;
uint8_t type;
uint8_t flags;
uint16_t _reserved;
} __packed;
struct mto {
uint16_t length;
uint16_t type;
uint16_t line_type_flags;
uint8_t alarm_control;
uint8_t _reserved[3];
} __packed;
struct go {
uint16_t length;
uint16_t type;
uint32_t domid;
uint8_t hhmmss_time[8];
uint8_t th_time[3];
uint8_t reserved_0;
uint8_t dddyyyy_date[7];
uint8_t _reserved_1;
uint16_t general_msg_flags;
uint8_t _reserved_2[10];
uint8_t originating_system_name[8];
uint8_t job_guest_name[8];
} __packed;
struct mdb_header {
uint16_t length;
uint16_t type;
uint32_t tag;
uint32_t revision_code;
} __packed;
struct mdb {
struct mdb_header header;
struct go go;
} __packed;
struct msg_buf {
struct evbuf_header header;
struct mdb mdb;
} __packed;
struct write_sccb {
struct sccb_header header;
struct msg_buf msg_buf;
} __packed;
struct init_sccb {
struct sccb_header header;
uint16_t _reserved;
uint16_t mask_length;
sccb_mask_t receive_mask;
sccb_mask_t send_mask;
sccb_mask_t sclp_send_mask;
sccb_mask_t sclp_receive_mask;
} __packed;
struct read_info_sccb {
struct sccb_header header;
uint16_t rnmax;
uint8_t rnsize;
uint8_t _reserved0[24-11];
uint8_t loadparm[8];
uint8_t reserved1[42-32];
uint8_t fac42;
uint8_t _reserved6[48-43];
uint64_t facilities;
uint8_t _reserved2[66-56];
uint8_t fac66;
uint8_t _reserved7[84-67];
uint8_t fac84;
uint8_t fac85;
uint8_t _reserved3[91-86];
uint8_t flags;
uint8_t _reserved4[100-92];
uint32_t rnsize2;
uint64_t rnmax2;
uint8_t _reserved5[4096-112];
} __packed __aligned(PAGE_SIZE);
struct read_sccb {
struct sccb_header header;
uint8_t data[4096-8];
} __packed __aligned(PAGE_SIZE);
int start_sclp(unsigned int, void *);
int sclp_setup(int);
int sclp_print(char *);
int sclp_param(char *);
int sclp_read(unsigned long, void *, int *);
int sclp_read_info(struct read_info_sccb *sccb);
int sclp_wait_for_int(unsigned long long);
#endif /* SCLP_H */