Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
diag.h
Go to the documentation of this file.
1 /*
2  * s390 diagnose functions
3  *
4  * Copyright IBM Corp. 2007
5  * Author(s): Michael Holzheu <[email protected]>
6  */
7 
8 #ifndef _ASM_S390_DIAG_H
9 #define _ASM_S390_DIAG_H
10 
11 /*
12  * Diagnose 10: Release page range
13  */
14 static inline void diag10_range(unsigned long start_pfn, unsigned long num_pfn)
15 {
16  unsigned long start_addr, end_addr;
17 
18  start_addr = start_pfn << PAGE_SHIFT;
19  end_addr = (start_pfn + num_pfn - 1) << PAGE_SHIFT;
20 
21  asm volatile(
22  "0: diag %0,%1,0x10\n"
23  "1:\n"
24  EX_TABLE(0b, 1b)
25  EX_TABLE(1b, 1b)
26  : : "a" (start_addr), "a" (end_addr));
27 }
28 
29 /*
30  * Diagnose 14: Input spool file manipulation
31  */
32 extern int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode);
33 
34 /*
35  * Diagnose 210: Get information about a virtual device
36  */
38  u16 vrdcdvno; /* device number (input) */
39  u16 vrdclen; /* data block length (input) */
40  u8 vrdcvcla; /* virtual device class (output) */
41  u8 vrdcvtyp; /* virtual device type (output) */
42  u8 vrdcvsta; /* virtual device status (output) */
43  u8 vrdcvfla; /* virtual device flags (output) */
44  u8 vrdcrccl; /* real device class (output) */
45  u8 vrdccrty; /* real device type (output) */
46  u8 vrdccrmd; /* real device model (output) */
47  u8 vrdccrft; /* real device feature (output) */
48 } __attribute__((packed, aligned(4)));
49 
50 extern int diag210(struct diag210 *addr);
51 
52 #endif /* _ASM_S390_DIAG_H */