Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
s390
include
asm
appldata.h
Go to the documentation of this file.
1
/*
2
* Copyright IBM Corp. 2006
3
*
4
* Author(s): Melissa Howland <
[email protected]
>
5
*/
6
7
#ifndef _ASM_S390_APPLDATA_H
8
#define _ASM_S390_APPLDATA_H
9
10
#include <asm/io.h>
11
12
#ifndef CONFIG_64BIT
13
14
#define APPLDATA_START_INTERVAL_REC 0x00
/* Function codes for */
15
#define APPLDATA_STOP_REC 0x01
/* DIAG 0xDC */
16
#define APPLDATA_GEN_EVENT_REC 0x02
17
#define APPLDATA_START_CONFIG_REC 0x03
18
19
/*
20
* Parameter list for DIAGNOSE X'DC'
21
*/
22
struct
appldata_parameter_list
{
23
u16
diag
;
/* The DIAGNOSE code X'00DC' */
24
u8
function
;
/* The function code for the DIAGNOSE */
25
u8
parlist_length
;
/* Length of the parameter list */
26
u32
product_id_addr
;
/* Address of the 16-byte product ID */
27
u16
reserved
;
28
u16
buffer_length
;
/* Length of the application data buffer */
29
u32
buffer_addr
;
/* Address of the application data buffer */
30
}
__attribute__
((packed));
31
32
#else
/* CONFIG_64BIT */
33
34
#define APPLDATA_START_INTERVAL_REC 0x80
35
#define APPLDATA_STOP_REC 0x81
36
#define APPLDATA_GEN_EVENT_REC 0x82
37
#define APPLDATA_START_CONFIG_REC 0x83
38
39
/*
40
* Parameter list for DIAGNOSE X'DC'
41
*/
42
struct
appldata_parameter_list
{
43
u16
diag
;
44
u8
function
;
45
u8
parlist_length
;
46
u32
unused01;
47
u16
reserved
;
48
u16
buffer_length
;
49
u32
unused02;
50
u64
product_id_addr
;
51
u64
buffer_addr
;
52
}
__attribute__
((packed));
53
54
#endif
/* CONFIG_64BIT */
55
56
struct
appldata_product_id
{
57
char
prod_nr
[7];
/* product number */
58
u16
prod_fn
;
/* product function */
59
u8
record_nr
;
/* record number */
60
u16
version_nr
;
/* version */
61
u16
release_nr
;
/* release */
62
u16
mod_lvl
;
/* modification level */
63
}
__attribute__
((packed));
64
65
static
inline
int
appldata_asm(
struct
appldata_product_id
*
id
,
66
unsigned
short
fn
,
void
*
buffer
,
67
unsigned
short
length
)
68
{
69
struct
appldata_parameter_list
parm_list;
70
int
ry
;
71
72
if
(!
MACHINE_IS_VM
)
73
return
-
EOPNOTSUPP
;
74
parm_list.diag = 0xdc;
75
parm_list.function =
fn
;
76
parm_list.parlist_length =
sizeof
(parm_list);
77
parm_list.buffer_length =
length
;
78
parm_list.product_id_addr = (
unsigned
long
)
id
;
79
parm_list.buffer_addr =
virt_to_phys
(buffer);
80
asm
volatile
(
81
" diag %1,%0,0xdc"
82
:
"=d"
(
ry
)
83
:
"d"
(&parm_list),
"m"
(parm_list),
"m"
(*
id
)
84
:
"cc"
);
85
return
ry
;
86
}
87
88
#endif
/* _ASM_S390_APPLDATA_H */
Generated on Thu Jan 10 2013 13:16:32 for Linux Kernel by
1.8.2