root/arch/s390/include/asm/appldata.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. appldata_asm

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Copyright IBM Corp. 2006
   4  *
   5  * Author(s): Melissa Howland <melissah@us.ibm.com>
   6  */
   7 
   8 #ifndef _ASM_S390_APPLDATA_H
   9 #define _ASM_S390_APPLDATA_H
  10 
  11 #include <asm/diag.h>
  12 #include <asm/io.h>
  13 
  14 #define APPLDATA_START_INTERVAL_REC     0x80
  15 #define APPLDATA_STOP_REC               0x81
  16 #define APPLDATA_GEN_EVENT_REC          0x82
  17 #define APPLDATA_START_CONFIG_REC       0x83
  18 
  19 /*
  20  * Parameter list for DIAGNOSE X'DC'
  21  */
  22 struct appldata_parameter_list {
  23         u16 diag;
  24         u8  function;
  25         u8  parlist_length;
  26         u32 unused01;
  27         u16 reserved;
  28         u16 buffer_length;
  29         u32 unused02;
  30         u64 product_id_addr;
  31         u64 buffer_addr;
  32 } __attribute__ ((packed));
  33 
  34 struct appldata_product_id {
  35         char prod_nr[7];        /* product number */
  36         u16  prod_fn;           /* product function */
  37         u8   record_nr;         /* record number */
  38         u16  version_nr;        /* version */
  39         u16  release_nr;        /* release */
  40         u16  mod_lvl;           /* modification level */
  41 } __attribute__ ((packed));
  42 
  43 
  44 static inline int appldata_asm(struct appldata_parameter_list *parm_list,
  45                                struct appldata_product_id *id,
  46                                unsigned short fn, void *buffer,
  47                                unsigned short length)
  48 {
  49         int ry;
  50 
  51         if (!MACHINE_IS_VM)
  52                 return -EOPNOTSUPP;
  53         parm_list->diag = 0xdc;
  54         parm_list->function = fn;
  55         parm_list->parlist_length = sizeof(*parm_list);
  56         parm_list->buffer_length = length;
  57         parm_list->product_id_addr = (unsigned long) id;
  58         parm_list->buffer_addr = virt_to_phys(buffer);
  59         diag_stat_inc(DIAG_STAT_X0DC);
  60         asm volatile(
  61                 "       diag    %1,%0,0xdc"
  62                 : "=d" (ry)
  63                 : "d" (parm_list), "m" (*parm_list), "m" (*id)
  64                 : "cc");
  65         return ry;
  66 }
  67 
  68 #endif /* _ASM_S390_APPLDATA_H */

/* [<][>][^][v][top][bottom][index][help] */