Lines Matching refs:sccb
107 static void read_SCP_info(SCLPDevice *sclp, SCCB *sccb) in read_SCP_info() argument
109 ReadInfo *read_info = (ReadInfo *) sccb; in read_SCP_info()
118 CPUEntry *entries_start = (void *)sccb + offset_cpu; in read_SCP_info()
120 if (be16_to_cpu(sccb->h.length) < required_len) { in read_SCP_info()
121 if (ext_len_sccb_supported(sccb->h)) { in read_SCP_info()
122 sccb->h.length = cpu_to_be16(required_len); in read_SCP_info()
124 sccb->h.response_code = cpu_to_be16(SCLP_RC_INSUFFICIENT_SCCB_LENGTH); in read_SCP_info()
181 sccb->h.response_code = cpu_to_be16(SCLP_RC_NORMAL_READ_COMPLETION); in read_SCP_info()
185 static void sclp_read_cpu_info(SCLPDevice *sclp, SCCB *sccb) in sclp_read_cpu_info() argument
188 ReadCpuInfo *cpu_info = (ReadCpuInfo *) sccb; in sclp_read_cpu_info()
192 if (be16_to_cpu(sccb->h.length) < required_len) { in sclp_read_cpu_info()
193 if (ext_len_sccb_supported(sccb->h)) { in sclp_read_cpu_info()
194 sccb->h.length = cpu_to_be16(required_len); in sclp_read_cpu_info()
196 sccb->h.response_code = cpu_to_be16(SCLP_RC_INSUFFICIENT_SCCB_LENGTH); in sclp_read_cpu_info()
210 sccb->h.response_code = cpu_to_be16(SCLP_RC_NORMAL_READ_COMPLETION); in sclp_read_cpu_info()
213 static void sclp_configure_io_adapter(SCLPDevice *sclp, SCCB *sccb, in sclp_configure_io_adapter() argument
218 if (be16_to_cpu(sccb->h.length) < 16) { in sclp_configure_io_adapter()
223 switch (((IoaCfgSccb *)sccb)->atype) { in sclp_configure_io_adapter()
227 s390_pci_sclp_configure(sccb); in sclp_configure_io_adapter()
229 s390_pci_sclp_deconfigure(sccb); in sclp_configure_io_adapter()
239 sccb->h.response_code = cpu_to_be16(rc); in sclp_configure_io_adapter()
242 static void sclp_execute(SCLPDevice *sclp, SCCB *sccb, uint32_t code) in sclp_execute() argument
251 sclp_c->read_SCP_info(sclp, sccb); in sclp_execute()
254 sclp_c->read_cpu_info(sclp, sccb); in sclp_execute()
257 sclp_configure_io_adapter(sclp, sccb, true); in sclp_execute()
260 sclp_configure_io_adapter(sclp, sccb, false); in sclp_execute()
263 efc->command_handler(ef, sccb, code); in sclp_execute()
273 int sclp_service_call_protected(S390CPU *cpu, uint64_t sccb, uint32_t code) in sclp_service_call_protected() argument
300 int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code) in sclp_service_call() argument
312 if (cpu_physical_memory_is_io(sccb)) { in sclp_service_call()
315 if ((sccb & ~0x1fffUL) == 0 || (sccb & ~0x1fffUL) == env->psa in sclp_service_call()
316 || (sccb & ~0x7ffffff8UL) != 0) { in sclp_service_call()
321 cpu_physical_memory_read(sccb, &header, sizeof(SCCBHeader)); in sclp_service_call()
334 cpu_physical_memory_read(sccb, work_sccb, be16_to_cpu(header.length)); in sclp_service_call()
341 if (!sccb_verify_boundary(sccb, be16_to_cpu(work_sccb->h.length), code)) { in sclp_service_call()
348 cpu_physical_memory_write(sccb, work_sccb, in sclp_service_call()
351 sclp_c->service_interrupt(sclp, sccb); in sclp_service_call()
356 static void service_interrupt(SCLPDevice *sclp, uint32_t sccb) in service_interrupt() argument
361 uint32_t param = sccb & ~3; in service_interrupt()
373 void sclp_service_interrupt(uint32_t sccb) in sclp_service_interrupt() argument
378 sclp_c->service_interrupt(sclp, sccb); in sclp_service_interrupt()