/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_S390_SIE_H
#define _UAPI_ASM_S390_SIE_H
#define diagnose_codes \
{ 0 x10, "DIAG (0x10) release pages" }, \
{ 0 x44, "DIAG (0x44) time slice end" }, \
{ 0 x9c, "DIAG (0x9c) time slice end directed" }, \
{ 0 x204, "DIAG (0x204) logical-cpu utilization" }, \
{ 0 x258, "DIAG (0x258) page-reference services" }, \
{ 0 x288, "DIAG (0x288) watchdog functions" }, \
{ 0 x308, "DIAG (0x308) ipl functions" }, \
{ 0 x500, "DIAG (0x500) KVM virtio functions" }, \
{ 0 x501, "DIAG (0x501) KVM breakpoint" }
#define sigp_order_codes \
{ 0 x01, "SIGP sense" }, \
{ 0 x02, "SIGP external call" }, \
{ 0 x03, "SIGP emergency signal" }, \
{ 0 x04, "SIGP start" }, \
{ 0 x05, "SIGP stop" }, \
{ 0 x06, "SIGP restart" }, \
{ 0 x09, "SIGP stop and store status" }, \
{ 0 x0b, "SIGP initial cpu reset" }, \
{ 0 x0c, "SIGP cpu reset" }, \
{ 0 x0d, "SIGP set prefix" }, \
{ 0 x0e, "SIGP store status at address" }, \
{ 0 x12, "SIGP set architecture" }, \
{ 0 x13, "SIGP conditional emergency signal" }, \
{ 0 x15, "SIGP sense running" }, \
{ 0 x16, "SIGP set multithreading" }, \
{ 0 x17, "SIGP store additional status at address" }
#define icpt_prog_codes \
{ 0 x0001, "Prog Operation" }, \
{ 0 x0002, "Prog Privileged Operation" }, \
{ 0 x0003, "Prog Execute" }, \
{ 0 x0004, "Prog Protection" }, \
{ 0 x0005, "Prog Addressing" }, \
{ 0 x0006, "Prog Specification" }, \
{ 0 x0007, "Prog Data" }, \
{ 0 x0008, "Prog Fixedpoint overflow" }, \
{ 0 x0009, "Prog Fixedpoint divide" }, \
{ 0 x000A, "Prog Decimal overflow" }, \
{ 0 x000B, "Prog Decimal divide" }, \
{ 0 x000C, "Prog HFP exponent overflow" }, \
{ 0 x000D, "Prog HFP exponent underflow" }, \
{ 0 x000E, "Prog HFP significance" }, \
{ 0 x000F, "Prog HFP divide" }, \
{ 0 x0010, "Prog Segment translation" }, \
{ 0 x0011, "Prog Page translation" }, \
{ 0 x0012, "Prog Translation specification" }, \
{ 0 x0013, "Prog Special operation" }, \
{ 0 x0015, "Prog Operand" }, \
{ 0 x0016, "Prog Trace table" }, \
{ 0 x0017, "Prog ASNtranslation specification" }, \
{ 0 x001C, "Prog Spaceswitch event" }, \
{ 0 x001D, "Prog HFP square root" }, \
{ 0 x001F, "Prog PCtranslation specification" }, \
{ 0 x0020, "Prog AFX translation" }, \
{ 0 x0021, "Prog ASX translation" }, \
{ 0 x0022, "Prog LX translation" }, \
{ 0 x0023, "Prog EX translation" }, \
{ 0 x0024, "Prog Primary authority" }, \
{ 0 x0025, "Prog Secondary authority" }, \
{ 0 x0026, "Prog LFXtranslation exception" }, \
{ 0 x0027, "Prog LSXtranslation exception" }, \
{ 0 x0028, "Prog ALET specification" }, \
{ 0 x0029, "Prog ALEN translation" }, \
{ 0 x002A, "Prog ALE sequence" }, \
{ 0 x002B, "Prog ASTE validity" }, \
{ 0 x002C, "Prog ASTE sequence" }, \
{ 0 x002D, "Prog Extended authority" }, \
{ 0 x002E, "Prog LSTE sequence" }, \
{ 0 x002F, "Prog ASTE instance" }, \
{ 0 x0030, "Prog Stack full" }, \
{ 0 x0031, "Prog Stack empty" }, \
{ 0 x0032, "Prog Stack specification" }, \
{ 0 x0033, "Prog Stack type" }, \
{ 0 x0034, "Prog Stack operation" }, \
{ 0 x0039, "Prog Region first translation" }, \
{ 0 x003A, "Prog Region second translation" }, \
{ 0 x003B, "Prog Region third translation" }, \
{ 0 x0040, "Prog Monitor event" }, \
{ 0 x0080, "Prog PER event" }, \
{ 0 x0119, "Prog Crypto operation" }
#define exit_code_ipa0(ipa0, opcode, mnemonic) \
{ (ipa0 << 8 | opcode), #ipa0 " " mnemonic }
#define exit_code(opcode, mnemonic) \
{ opcode, mnemonic }
#define icpt_insn_codes \
exit_code_ipa0(0 x01, 0 x01, "PR" ), \
exit_code_ipa0(0 x01, 0 x04, "PTFF" ), \
exit_code_ipa0(0 x01, 0 x07, "SCKPF" ), \
exit_code_ipa0(0 xAA, 0 x00, "RINEXT" ), \
exit_code_ipa0(0 xAA, 0 x01, "RION" ), \
exit_code_ipa0(0 xAA, 0 x02, "TRIC" ), \
exit_code_ipa0(0 xAA, 0 x03, "RIOFF" ), \
exit_code_ipa0(0 xAA, 0 x04, "RIEMIT" ), \
exit_code_ipa0(0 xB2, 0 x02, "STIDP" ), \
exit_code_ipa0(0 xB2, 0 x04, "SCK" ), \
exit_code_ipa0(0 xB2, 0 x05, "STCK" ), \
exit_code_ipa0(0 xB2, 0 x06, "SCKC" ), \
exit_code_ipa0(0 xB2, 0 x07, "STCKC" ), \
exit_code_ipa0(0 xB2, 0 x08, "SPT" ), \
exit_code_ipa0(0 xB2, 0 x09, "STPT" ), \
exit_code_ipa0(0 xB2, 0 x0d, "PTLB" ), \
exit_code_ipa0(0 xB2, 0 x10, "SPX" ), \
exit_code_ipa0(0 xB2, 0 x11, "STPX" ), \
exit_code_ipa0(0 xB2, 0 x12, "STAP" ), \
exit_code_ipa0(0 xB2, 0 x14, "SIE" ), \
exit_code_ipa0(0 xB2, 0 x16, "SETR" ), \
exit_code_ipa0(0 xB2, 0 x17, "STETR" ), \
exit_code_ipa0(0 xB2, 0 x18, "PC" ), \
exit_code_ipa0(0 xB2, 0 x20, "SERVC" ), \
exit_code_ipa0(0 xB2, 0 x21, "IPTE" ), \
exit_code_ipa0(0 xB2, 0 x28, "PT" ), \
exit_code_ipa0(0 xB2, 0 x29, "ISKE" ), \
exit_code_ipa0(0 xB2, 0 x2a, "RRBE" ), \
exit_code_ipa0(0 xB2, 0 x2b, "SSKE" ), \
exit_code_ipa0(0 xB2, 0 x2c, "TB" ), \
exit_code_ipa0(0 xB2, 0 x2e, "PGIN" ), \
exit_code_ipa0(0 xB2, 0 x2f, "PGOUT" ), \
exit_code_ipa0(0 xB2, 0 x30, "CSCH" ), \
exit_code_ipa0(0 xB2, 0 x31, "HSCH" ), \
exit_code_ipa0(0 xB2, 0 x32, "MSCH" ), \
exit_code_ipa0(0 xB2, 0 x33, "SSCH" ), \
exit_code_ipa0(0 xB2, 0 x34, "STSCH" ), \
exit_code_ipa0(0 xB2, 0 x35, "TSCH" ), \
exit_code_ipa0(0 xB2, 0 x36, "TPI" ), \
exit_code_ipa0(0 xB2, 0 x37, "SAL" ), \
exit_code_ipa0(0 xB2, 0 x38, "RSCH" ), \
exit_code_ipa0(0 xB2, 0 x39, "STCRW" ), \
exit_code_ipa0(0 xB2, 0 x3a, "STCPS" ), \
exit_code_ipa0(0 xB2, 0 x3b, "RCHP" ), \
exit_code_ipa0(0 xB2, 0 x3c, "SCHM" ), \
exit_code_ipa0(0 xB2, 0 x40, "BAKR" ), \
exit_code_ipa0(0 xB2, 0 x48, "PALB" ), \
exit_code_ipa0(0 xB2, 0 x4c, "TAR" ), \
exit_code_ipa0(0 xB2, 0 x50, "CSP" ), \
exit_code_ipa0(0 xB2, 0 x54, "MVPG" ), \
exit_code_ipa0(0 xB2, 0 x56, "STHYI" ), \
exit_code_ipa0(0 xB2, 0 x58, "BSG" ), \
exit_code_ipa0(0 xB2, 0 x5a, "BSA" ), \
exit_code_ipa0(0 xB2, 0 x5f, "CHSC" ), \
exit_code_ipa0(0 xB2, 0 x74, "SIGA" ), \
exit_code_ipa0(0 xB2, 0 x76, "XSCH" ), \
exit_code_ipa0(0 xB2, 0 x78, "STCKE" ), \
exit_code_ipa0(0 xB2, 0 x7c, "STCKF" ), \
exit_code_ipa0(0 xB2, 0 x7d, "STSI" ), \
exit_code_ipa0(0 xB2, 0 xb0, "STFLE" ), \
exit_code_ipa0(0 xB2, 0 xb1, "STFL" ), \
exit_code_ipa0(0 xB2, 0 xb2, "LPSWE" ), \
exit_code_ipa0(0 xB2, 0 xf8, "TEND" ), \
exit_code_ipa0(0 xB2, 0 xfc, "TABORT" ), \
exit_code_ipa0(0 xB9, 0 x1e, "KMAC" ), \
exit_code_ipa0(0 xB9, 0 x28, "PCKMO" ), \
exit_code_ipa0(0 xB9, 0 x2a, "KMF" ), \
exit_code_ipa0(0 xB9, 0 x2b, "KMO" ), \
exit_code_ipa0(0 xB9, 0 x2d, "KMCTR" ), \
exit_code_ipa0(0 xB9, 0 x2e, "KM" ), \
exit_code_ipa0(0 xB9, 0 x2f, "KMC" ), \
exit_code_ipa0(0 xB9, 0 x3e, "KIMD" ), \
exit_code_ipa0(0 xB9, 0 x3f, "KLMD" ), \
exit_code_ipa0(0 xB9, 0 x8a, "CSPG" ), \
exit_code_ipa0(0 xB9, 0 x8d, "EPSW" ), \
exit_code_ipa0(0 xB9, 0 x8e, "IDTE" ), \
exit_code_ipa0(0 xB9, 0 x8f, "CRDTE" ), \
exit_code_ipa0(0 xB9, 0 x9c, "EQBS" ), \
exit_code_ipa0(0 xB9, 0 xa2, "PTF" ), \
exit_code_ipa0(0 xB9, 0 xab, "ESSA" ), \
exit_code_ipa0(0 xB9, 0 xae, "RRBM" ), \
exit_code_ipa0(0 xB9, 0 xaf, "PFMF" ), \
exit_code_ipa0(0 xE3, 0 x03, "LRAG" ), \
exit_code_ipa0(0 xE3, 0 x13, "LRAY" ), \
exit_code_ipa0(0 xE3, 0 x25, "NTSTG" ), \
exit_code_ipa0(0 xE5, 0 x00, "LASP" ), \
exit_code_ipa0(0 xE5, 0 x01, "TPROT" ), \
exit_code_ipa0(0 xE5, 0 x60, "TBEGIN" ), \
exit_code_ipa0(0 xE5, 0 x61, "TBEGINC" ), \
exit_code_ipa0(0 xEB, 0 x25, "STCTG" ), \
exit_code_ipa0(0 xEB, 0 x2f, "LCTLG" ), \
exit_code_ipa0(0 xEB, 0 x60, "LRIC" ), \
exit_code_ipa0(0 xEB, 0 x61, "STRIC" ), \
exit_code_ipa0(0 xEB, 0 x62, "MRIC" ), \
exit_code_ipa0(0 xEB, 0 x8a, "SQBS" ), \
exit_code_ipa0(0 xC8, 0 x01, "ECTG" ), \
exit_code(0 x0a, "SVC" ), \
exit_code(0 x80, "SSM" ), \
exit_code(0 x82, "LPSW" ), \
exit_code(0 x83, "DIAG" ), \
exit_code(0 xae, "SIGP" ), \
exit_code(0 xac, "STNSM" ), \
exit_code(0 xad, "STOSM" ), \
exit_code(0 xb1, "LRA" ), \
exit_code(0 xb6, "STCTL" ), \
exit_code(0 xb7, "LCTL" ), \
exit_code(0 xee, "PLO" )
#define sie_intercept_code \
{ 0 x00, "Host interruption" }, \
{ 0 x04, "Instruction" }, \
{ 0 x08, "Program interruption" }, \
{ 0 x0c, "Instruction and program interruption" }, \
{ 0 x10, "External request" }, \
{ 0 x14, "External interruption" }, \
{ 0 x18, "I/O request" }, \
{ 0 x1c, "Wait state" }, \
{ 0 x20, "Validity" }, \
{ 0 x28, "Stop request" }, \
{ 0 x2c, "Operation exception" }, \
{ 0 x38, "Partial-execution" }, \
{ 0 x3c, "I/O interruption" }, \
{ 0 x40, "I/O instruction" }, \
{ 0 x48, "Timing subset" }
/*
* This is the simple interceptable instructions decoder.
*
* It will be used as userspace interface and it can be used in places
* that does not allow to use general decoder functions,
* such as trace events declarations.
*
* Some userspace tools may want to parse this code
* and would be confused by switch(), if() and other statements,
* but they can understand conditional operator.
*/
#define INSN_DECODE_IPA0(ipa0, insn, rshift, mask) \
(insn >> 56 ) == (ipa0) ? \
((ipa0 << 8 ) | ((insn >> rshift) & mask)) :
#define INSN_DECODE(insn) (insn >> 56 )
/*
* The macro icpt_insn_decoder() takes an intercepted instruction
* and returns a key, which can be used to find a mnemonic name
* of the instruction in the icpt_insn_codes table.
*/
#define icpt_insn_decoder(insn) ( \
INSN_DECODE_IPA0(0 x01, insn, 48 , 0 xff) \
INSN_DECODE_IPA0(0 xaa, insn, 48 , 0 x0f) \
INSN_DECODE_IPA0(0 xb2, insn, 48 , 0 xff) \
INSN_DECODE_IPA0(0 xb9, insn, 48 , 0 xff) \
INSN_DECODE_IPA0(0 xe3, insn, 48 , 0 xff) \
INSN_DECODE_IPA0(0 xe5, insn, 48 , 0 xff) \
INSN_DECODE_IPA0(0 xeb, insn, 16 , 0 xff) \
INSN_DECODE_IPA0(0 xc8, insn, 48 , 0 x0f) \
INSN_DECODE(insn))
#endif /* _UAPI_ASM_S390_SIE_H */
Messung V0.5 in Prozent C=95 H=92 G=93
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland