Merge tag 'renesas-dt-fixes2-for-v4.5' of git://git.kernel.org/pub/scm/linux/kernel...
[deliverable/linux.git] / arch / s390 / include / asm / diag.h
CommitLineData
0a87c5cf
MH
1/*
2 * s390 diagnose functions
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
6 */
7
8#ifndef _ASM_S390_DIAG_H
9#define _ASM_S390_DIAG_H
10
1ec2772e
MS
11#include <linux/percpu.h>
12
13enum diag_stat_enum {
14 DIAG_STAT_X008,
15 DIAG_STAT_X00C,
16 DIAG_STAT_X010,
17 DIAG_STAT_X014,
18 DIAG_STAT_X044,
19 DIAG_STAT_X064,
20 DIAG_STAT_X09C,
21 DIAG_STAT_X0DC,
22 DIAG_STAT_X204,
23 DIAG_STAT_X210,
24 DIAG_STAT_X224,
25 DIAG_STAT_X250,
26 DIAG_STAT_X258,
27 DIAG_STAT_X288,
28 DIAG_STAT_X2C4,
29 DIAG_STAT_X2FC,
30 DIAG_STAT_X304,
31 DIAG_STAT_X308,
32 DIAG_STAT_X500,
33 NR_DIAG_STAT
34};
35
b5a6b71b
MS
36void diag_stat_inc(enum diag_stat_enum nr);
37void diag_stat_inc_norecursion(enum diag_stat_enum nr);
1ec2772e 38
0a87c5cf 39/*
83ace270 40 * Diagnose 10: Release page range
0a87c5cf 41 */
83ace270
MH
42static inline void diag10_range(unsigned long start_pfn, unsigned long num_pfn)
43{
44 unsigned long start_addr, end_addr;
45
46 start_addr = start_pfn << PAGE_SHIFT;
47 end_addr = (start_pfn + num_pfn - 1) << PAGE_SHIFT;
48
1ec2772e 49 diag_stat_inc(DIAG_STAT_X010);
83ace270
MH
50 asm volatile(
51 "0: diag %0,%1,0x10\n"
52 "1:\n"
53 EX_TABLE(0b, 1b)
54 EX_TABLE(1b, 1b)
55 : : "a" (start_addr), "a" (end_addr));
56}
0a87c5cf
MH
57
58/*
59 * Diagnose 14: Input spool file manipulation
60 */
61extern int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode);
62
63/*
64 * Diagnose 210: Get information about a virtual device
65 */
66struct diag210 {
67 u16 vrdcdvno; /* device number (input) */
68 u16 vrdclen; /* data block length (input) */
69 u8 vrdcvcla; /* virtual device class (output) */
70 u8 vrdcvtyp; /* virtual device type (output) */
71 u8 vrdcvsta; /* virtual device status (output) */
72 u8 vrdcvfla; /* virtual device flags (output) */
73 u8 vrdcrccl; /* real device class (output) */
74 u8 vrdccrty; /* real device type (output) */
75 u8 vrdccrmd; /* real device model (output) */
76 u8 vrdccrft; /* real device feature (output) */
77} __attribute__((packed, aligned(4)));
78
79extern int diag210(struct diag210 *addr);
80
81#endif /* _ASM_S390_DIAG_H */
This page took 0.554374 seconds and 5 git commands to generate.