Michael Holzheu | 0a87c5c | 2007-08-22 13:51:40 +0200 | [diff] [blame] | 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 | |
| 11 | /* |
Michael Holzheu | 83ace270 | 2011-05-10 17:13:41 +0200 | [diff] [blame] | 12 | * Diagnose 10: Release page range |
Michael Holzheu | 0a87c5c | 2007-08-22 13:51:40 +0200 | [diff] [blame] | 13 | */ |
Michael Holzheu | 83ace270 | 2011-05-10 17:13:41 +0200 | [diff] [blame] | 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 | } |
Michael Holzheu | 0a87c5c | 2007-08-22 13:51:40 +0200 | [diff] [blame] | 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 | */ |
| 37 | struct diag210 { |
| 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 */ |