1
2
3
4
5
6
7
8#ifndef _ASM_S390_DIAG_H
9#define _ASM_S390_DIAG_H
10
11
12
13
14static 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
31
32extern int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode);
33
34
35
36
37struct diag210 {
38 u16 vrdcdvno;
39 u16 vrdclen;
40 u8 vrdcvcla;
41 u8 vrdcvtyp;
42 u8 vrdcvsta;
43 u8 vrdcvfla;
44 u8 vrdcrccl;
45 u8 vrdccrty;
46 u8 vrdccrmd;
47 u8 vrdccrft;
48} __attribute__((packed, aligned(4)));
49
50extern int diag210(struct diag210 *addr);
51
52#endif
53