-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
s390/runtime instrumentation: provide uapi header file
The man page for the s390_runtime_instr() system call refers to a header file that was never exported. Therefore it's time to finally provide the header file, and move large parts of the runtime instrumentation header file to a new uapi header file. Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
- Loading branch information
Heiko Carstens
authored and
Martin Schwidefsky
committed
Feb 2, 2018
1 parent
5260b0f
commit df2f815
Showing
2 changed files
with
75 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
#ifndef _S390_UAPI_RUNTIME_INSTR_H | ||
#define _S390_UAPI_RUNTIME_INSTR_H | ||
|
||
#include <linux/types.h> | ||
|
||
#define S390_RUNTIME_INSTR_START 0x1 | ||
#define S390_RUNTIME_INSTR_STOP 0x2 | ||
|
||
struct runtime_instr_cb { | ||
__u64 rca; | ||
__u64 roa; | ||
__u64 rla; | ||
|
||
__u32 v : 1; | ||
__u32 s : 1; | ||
__u32 k : 1; | ||
__u32 h : 1; | ||
__u32 a : 1; | ||
__u32 reserved1 : 3; | ||
__u32 ps : 1; | ||
__u32 qs : 1; | ||
__u32 pc : 1; | ||
__u32 qc : 1; | ||
__u32 reserved2 : 1; | ||
__u32 g : 1; | ||
__u32 u : 1; | ||
__u32 l : 1; | ||
__u32 key : 4; | ||
__u32 reserved3 : 8; | ||
__u32 t : 1; | ||
__u32 rgs : 3; | ||
|
||
__u32 m : 4; | ||
__u32 n : 1; | ||
__u32 mae : 1; | ||
__u32 reserved4 : 2; | ||
__u32 c : 1; | ||
__u32 r : 1; | ||
__u32 b : 1; | ||
__u32 j : 1; | ||
__u32 e : 1; | ||
__u32 x : 1; | ||
__u32 reserved5 : 2; | ||
__u32 bpxn : 1; | ||
__u32 bpxt : 1; | ||
__u32 bpti : 1; | ||
__u32 bpni : 1; | ||
__u32 reserved6 : 2; | ||
|
||
__u32 d : 1; | ||
__u32 f : 1; | ||
__u32 ic : 4; | ||
__u32 dc : 4; | ||
|
||
__u64 reserved7; | ||
__u64 sf; | ||
__u64 rsic; | ||
__u64 reserved8; | ||
} __packed __aligned(8); | ||
|
||
static inline void load_runtime_instr_cb(struct runtime_instr_cb *cb) | ||
{ | ||
asm volatile(".insn rsy,0xeb0000000060,0,0,%0" /* LRIC */ | ||
: : "Q" (*cb)); | ||
} | ||
|
||
static inline void store_runtime_instr_cb(struct runtime_instr_cb *cb) | ||
{ | ||
asm volatile(".insn rsy,0xeb0000000061,0,0,%0" /* STRIC */ | ||
: "=Q" (*cb) : : "cc"); | ||
} | ||
|
||
#endif /* _S390_UAPI_RUNTIME_INSTR_H */ |