16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2ceae283bSAlexander Yarygin #ifndef _UAPI_ASM_S390_SIE_H 3ceae283bSAlexander Yarygin #define _UAPI_ASM_S390_SIE_H 4ceae283bSAlexander Yarygin 5ceae283bSAlexander Yarygin #define diagnose_codes \ 6ceae283bSAlexander Yarygin { 0x10, "DIAG (0x10) release pages" }, \ 7ceae283bSAlexander Yarygin { 0x44, "DIAG (0x44) time slice end" }, \ 8ceae283bSAlexander Yarygin { 0x9c, "DIAG (0x9c) time slice end directed" }, \ 9ceae283bSAlexander Yarygin { 0x204, "DIAG (0x204) logical-cpu utilization" }, \ 10ceae283bSAlexander Yarygin { 0x258, "DIAG (0x258) page-reference services" }, \ 11dce382b6SAlexander Yarygin { 0x288, "DIAG (0x288) watchdog functions" }, \ 12ceae283bSAlexander Yarygin { 0x308, "DIAG (0x308) ipl functions" }, \ 13ceae283bSAlexander Yarygin { 0x500, "DIAG (0x500) KVM virtio functions" }, \ 14ceae283bSAlexander Yarygin { 0x501, "DIAG (0x501) KVM breakpoint" } 15ceae283bSAlexander Yarygin 16ceae283bSAlexander Yarygin #define sigp_order_codes \ 17d09a08e0SHeiko Carstens { 0x01, "SIGP sense" }, \ 18d09a08e0SHeiko Carstens { 0x02, "SIGP external call" }, \ 19d09a08e0SHeiko Carstens { 0x03, "SIGP emergency signal" }, \ 209f10b79dSChristian Borntraeger { 0x04, "SIGP start" }, \ 21d09a08e0SHeiko Carstens { 0x05, "SIGP stop" }, \ 22d09a08e0SHeiko Carstens { 0x06, "SIGP restart" }, \ 23d09a08e0SHeiko Carstens { 0x09, "SIGP stop and store status" }, \ 24d09a08e0SHeiko Carstens { 0x0b, "SIGP initial cpu reset" }, \ 259f10b79dSChristian Borntraeger { 0x0c, "SIGP cpu reset" }, \ 26d09a08e0SHeiko Carstens { 0x0d, "SIGP set prefix" }, \ 27d09a08e0SHeiko Carstens { 0x0e, "SIGP store status at address" }, \ 28d09a08e0SHeiko Carstens { 0x12, "SIGP set architecture" }, \ 299f10b79dSChristian Borntraeger { 0x13, "SIGP conditional emergency signal" }, \ 309f10b79dSChristian Borntraeger { 0x15, "SIGP sense running" }, \ 319f10b79dSChristian Borntraeger { 0x16, "SIGP set multithreading"}, \ 32*eefc69a0SJulian Wiedmann { 0x17, "SIGP store additional status at address"} 33ceae283bSAlexander Yarygin 34ceae283bSAlexander Yarygin #define icpt_prog_codes \ 35ceae283bSAlexander Yarygin { 0x0001, "Prog Operation" }, \ 36ceae283bSAlexander Yarygin { 0x0002, "Prog Privileged Operation" }, \ 37ceae283bSAlexander Yarygin { 0x0003, "Prog Execute" }, \ 38ceae283bSAlexander Yarygin { 0x0004, "Prog Protection" }, \ 39ceae283bSAlexander Yarygin { 0x0005, "Prog Addressing" }, \ 40ceae283bSAlexander Yarygin { 0x0006, "Prog Specification" }, \ 41ceae283bSAlexander Yarygin { 0x0007, "Prog Data" }, \ 42ceae283bSAlexander Yarygin { 0x0008, "Prog Fixedpoint overflow" }, \ 43ceae283bSAlexander Yarygin { 0x0009, "Prog Fixedpoint divide" }, \ 44ceae283bSAlexander Yarygin { 0x000A, "Prog Decimal overflow" }, \ 45ceae283bSAlexander Yarygin { 0x000B, "Prog Decimal divide" }, \ 46ceae283bSAlexander Yarygin { 0x000C, "Prog HFP exponent overflow" }, \ 47ceae283bSAlexander Yarygin { 0x000D, "Prog HFP exponent underflow" }, \ 48ceae283bSAlexander Yarygin { 0x000E, "Prog HFP significance" }, \ 49ceae283bSAlexander Yarygin { 0x000F, "Prog HFP divide" }, \ 50ceae283bSAlexander Yarygin { 0x0010, "Prog Segment translation" }, \ 51ceae283bSAlexander Yarygin { 0x0011, "Prog Page translation" }, \ 52ceae283bSAlexander Yarygin { 0x0012, "Prog Translation specification" }, \ 53ceae283bSAlexander Yarygin { 0x0013, "Prog Special operation" }, \ 54ceae283bSAlexander Yarygin { 0x0015, "Prog Operand" }, \ 55ceae283bSAlexander Yarygin { 0x0016, "Prog Trace table" }, \ 56ceae283bSAlexander Yarygin { 0x0017, "Prog ASNtranslation specification" }, \ 57ceae283bSAlexander Yarygin { 0x001C, "Prog Spaceswitch event" }, \ 58ceae283bSAlexander Yarygin { 0x001D, "Prog HFP square root" }, \ 59ceae283bSAlexander Yarygin { 0x001F, "Prog PCtranslation specification" }, \ 60ceae283bSAlexander Yarygin { 0x0020, "Prog AFX translation" }, \ 61ceae283bSAlexander Yarygin { 0x0021, "Prog ASX translation" }, \ 62ceae283bSAlexander Yarygin { 0x0022, "Prog LX translation" }, \ 63ceae283bSAlexander Yarygin { 0x0023, "Prog EX translation" }, \ 64ceae283bSAlexander Yarygin { 0x0024, "Prog Primary authority" }, \ 65ceae283bSAlexander Yarygin { 0x0025, "Prog Secondary authority" }, \ 66ceae283bSAlexander Yarygin { 0x0026, "Prog LFXtranslation exception" }, \ 67ceae283bSAlexander Yarygin { 0x0027, "Prog LSXtranslation exception" }, \ 68ceae283bSAlexander Yarygin { 0x0028, "Prog ALET specification" }, \ 69ceae283bSAlexander Yarygin { 0x0029, "Prog ALEN translation" }, \ 70ceae283bSAlexander Yarygin { 0x002A, "Prog ALE sequence" }, \ 71ceae283bSAlexander Yarygin { 0x002B, "Prog ASTE validity" }, \ 72ceae283bSAlexander Yarygin { 0x002C, "Prog ASTE sequence" }, \ 73ceae283bSAlexander Yarygin { 0x002D, "Prog Extended authority" }, \ 74ceae283bSAlexander Yarygin { 0x002E, "Prog LSTE sequence" }, \ 75ceae283bSAlexander Yarygin { 0x002F, "Prog ASTE instance" }, \ 76ceae283bSAlexander Yarygin { 0x0030, "Prog Stack full" }, \ 77ceae283bSAlexander Yarygin { 0x0031, "Prog Stack empty" }, \ 78ceae283bSAlexander Yarygin { 0x0032, "Prog Stack specification" }, \ 79ceae283bSAlexander Yarygin { 0x0033, "Prog Stack type" }, \ 80ceae283bSAlexander Yarygin { 0x0034, "Prog Stack operation" }, \ 81ceae283bSAlexander Yarygin { 0x0039, "Prog Region first translation" }, \ 82ceae283bSAlexander Yarygin { 0x003A, "Prog Region second translation" }, \ 83ceae283bSAlexander Yarygin { 0x003B, "Prog Region third translation" }, \ 84ceae283bSAlexander Yarygin { 0x0040, "Prog Monitor event" }, \ 85ceae283bSAlexander Yarygin { 0x0080, "Prog PER event" }, \ 86ceae283bSAlexander Yarygin { 0x0119, "Prog Crypto operation" } 87ceae283bSAlexander Yarygin 88ceae283bSAlexander Yarygin #define exit_code_ipa0(ipa0, opcode, mnemonic) \ 89ceae283bSAlexander Yarygin { (ipa0 << 8 | opcode), #ipa0 " " mnemonic } 90ceae283bSAlexander Yarygin #define exit_code(opcode, mnemonic) \ 91ceae283bSAlexander Yarygin { opcode, mnemonic } 92ceae283bSAlexander Yarygin 93ceae283bSAlexander Yarygin #define icpt_insn_codes \ 94ceae283bSAlexander Yarygin exit_code_ipa0(0x01, 0x01, "PR"), \ 95ceae283bSAlexander Yarygin exit_code_ipa0(0x01, 0x04, "PTFF"), \ 96ceae283bSAlexander Yarygin exit_code_ipa0(0x01, 0x07, "SCKPF"), \ 97ceae283bSAlexander Yarygin exit_code_ipa0(0xAA, 0x00, "RINEXT"), \ 98ceae283bSAlexander Yarygin exit_code_ipa0(0xAA, 0x01, "RION"), \ 99ceae283bSAlexander Yarygin exit_code_ipa0(0xAA, 0x02, "TRIC"), \ 100ceae283bSAlexander Yarygin exit_code_ipa0(0xAA, 0x03, "RIOFF"), \ 101ceae283bSAlexander Yarygin exit_code_ipa0(0xAA, 0x04, "RIEMIT"), \ 102ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x02, "STIDP"), \ 103ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x04, "SCK"), \ 104ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x05, "STCK"), \ 105ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x06, "SCKC"), \ 106ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x07, "STCKC"), \ 107ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x08, "SPT"), \ 108ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x09, "STPT"), \ 109ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x0d, "PTLB"), \ 110ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x10, "SPX"), \ 111ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x11, "STPX"), \ 112ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x12, "STAP"), \ 113ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x14, "SIE"), \ 114ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x16, "SETR"), \ 115ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x17, "STETR"), \ 116ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x18, "PC"), \ 117ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x20, "SERVC"), \ 118e59d120fSChristian Borntraeger exit_code_ipa0(0xB2, 0x21, "IPTE"), \ 119ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x28, "PT"), \ 120ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x29, "ISKE"), \ 121ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x2a, "RRBE"), \ 122ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x2b, "SSKE"), \ 123ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x2c, "TB"), \ 124ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x2e, "PGIN"), \ 125ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x2f, "PGOUT"), \ 126ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x30, "CSCH"), \ 127ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x31, "HSCH"), \ 128ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x32, "MSCH"), \ 129ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x33, "SSCH"), \ 130ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x34, "STSCH"), \ 131ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x35, "TSCH"), \ 132ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x36, "TPI"), \ 133ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x37, "SAL"), \ 134ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x38, "RSCH"), \ 135ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x39, "STCRW"), \ 136ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x3a, "STCPS"), \ 137ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x3b, "RCHP"), \ 138ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x3c, "SCHM"), \ 139ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x40, "BAKR"), \ 140ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x48, "PALB"), \ 141ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x4c, "TAR"), \ 142ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x50, "CSP"), \ 143ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x54, "MVPG"), \ 14495ca2cb5SJanosch Frank exit_code_ipa0(0xB2, 0x56, "STHYI"), \ 145ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x58, "BSG"), \ 146ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x5a, "BSA"), \ 147ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x5f, "CHSC"), \ 148ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x74, "SIGA"), \ 149ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x76, "XSCH"), \ 150ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x78, "STCKE"), \ 151ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x7c, "STCKF"), \ 152ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0x7d, "STSI"), \ 153ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0xb0, "STFLE"), \ 154ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0xb1, "STFL"), \ 155ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0xb2, "LPSWE"), \ 156ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0xf8, "TEND"), \ 157ceae283bSAlexander Yarygin exit_code_ipa0(0xB2, 0xfc, "TABORT"), \ 158ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x1e, "KMAC"), \ 159ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x28, "PCKMO"), \ 160ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x2a, "KMF"), \ 161ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x2b, "KMO"), \ 162ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x2d, "KMCTR"), \ 163ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x2e, "KM"), \ 164ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x2f, "KMC"), \ 165ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x3e, "KIMD"), \ 166ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x3f, "KLMD"), \ 167ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x8a, "CSPG"), \ 168ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x8d, "EPSW"), \ 169ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x8e, "IDTE"), \ 170ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x8f, "CRDTE"), \ 171ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0x9c, "EQBS"), \ 172ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0xa2, "PTF"), \ 173ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0xab, "ESSA"), \ 174ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0xae, "RRBM"), \ 175ceae283bSAlexander Yarygin exit_code_ipa0(0xB9, 0xaf, "PFMF"), \ 176ceae283bSAlexander Yarygin exit_code_ipa0(0xE3, 0x03, "LRAG"), \ 177ceae283bSAlexander Yarygin exit_code_ipa0(0xE3, 0x13, "LRAY"), \ 178ceae283bSAlexander Yarygin exit_code_ipa0(0xE3, 0x25, "NTSTG"), \ 179ceae283bSAlexander Yarygin exit_code_ipa0(0xE5, 0x00, "LASP"), \ 180ceae283bSAlexander Yarygin exit_code_ipa0(0xE5, 0x01, "TPROT"), \ 181ceae283bSAlexander Yarygin exit_code_ipa0(0xE5, 0x60, "TBEGIN"), \ 182ceae283bSAlexander Yarygin exit_code_ipa0(0xE5, 0x61, "TBEGINC"), \ 183ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x25, "STCTG"), \ 184ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x2f, "LCTLG"), \ 185ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x60, "LRIC"), \ 186ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x61, "STRIC"), \ 187ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x62, "MRIC"), \ 188ceae283bSAlexander Yarygin exit_code_ipa0(0xEB, 0x8a, "SQBS"), \ 189ceae283bSAlexander Yarygin exit_code_ipa0(0xC8, 0x01, "ECTG"), \ 190ceae283bSAlexander Yarygin exit_code(0x0a, "SVC"), \ 191ceae283bSAlexander Yarygin exit_code(0x80, "SSM"), \ 192ceae283bSAlexander Yarygin exit_code(0x82, "LPSW"), \ 193ceae283bSAlexander Yarygin exit_code(0x83, "DIAG"), \ 194ceae283bSAlexander Yarygin exit_code(0xae, "SIGP"), \ 195ceae283bSAlexander Yarygin exit_code(0xac, "STNSM"), \ 196ceae283bSAlexander Yarygin exit_code(0xad, "STOSM"), \ 197ceae283bSAlexander Yarygin exit_code(0xb1, "LRA"), \ 198ceae283bSAlexander Yarygin exit_code(0xb6, "STCTL"), \ 199ceae283bSAlexander Yarygin exit_code(0xb7, "LCTL"), \ 200ceae283bSAlexander Yarygin exit_code(0xee, "PLO") 201ceae283bSAlexander Yarygin 202ceae283bSAlexander Yarygin #define sie_intercept_code \ 203ceae283bSAlexander Yarygin { 0x00, "Host interruption" }, \ 204ceae283bSAlexander Yarygin { 0x04, "Instruction" }, \ 205ceae283bSAlexander Yarygin { 0x08, "Program interruption" }, \ 206ceae283bSAlexander Yarygin { 0x0c, "Instruction and program interruption" }, \ 207ceae283bSAlexander Yarygin { 0x10, "External request" }, \ 208ceae283bSAlexander Yarygin { 0x14, "External interruption" }, \ 209ceae283bSAlexander Yarygin { 0x18, "I/O request" }, \ 210ceae283bSAlexander Yarygin { 0x1c, "Wait state" }, \ 211ceae283bSAlexander Yarygin { 0x20, "Validity" }, \ 212ceae283bSAlexander Yarygin { 0x28, "Stop request" }, \ 213ceae283bSAlexander Yarygin { 0x2c, "Operation exception" }, \ 214ceae283bSAlexander Yarygin { 0x38, "Partial-execution" }, \ 215ceae283bSAlexander Yarygin { 0x3c, "I/O interruption" }, \ 216ceae283bSAlexander Yarygin { 0x40, "I/O instruction" }, \ 217ceae283bSAlexander Yarygin { 0x48, "Timing subset" } 218ceae283bSAlexander Yarygin 21905db1f6eSAlexander Yarygin /* 22005db1f6eSAlexander Yarygin * This is the simple interceptable instructions decoder. 22105db1f6eSAlexander Yarygin * 22205db1f6eSAlexander Yarygin * It will be used as userspace interface and it can be used in places 22305db1f6eSAlexander Yarygin * that does not allow to use general decoder functions, 22405db1f6eSAlexander Yarygin * such as trace events declarations. 22505db1f6eSAlexander Yarygin * 22605db1f6eSAlexander Yarygin * Some userspace tools may want to parse this code 22705db1f6eSAlexander Yarygin * and would be confused by switch(), if() and other statements, 22805db1f6eSAlexander Yarygin * but they can understand conditional operator. 22905db1f6eSAlexander Yarygin */ 23005db1f6eSAlexander Yarygin #define INSN_DECODE_IPA0(ipa0, insn, rshift, mask) \ 23105db1f6eSAlexander Yarygin (insn >> 56) == (ipa0) ? \ 23205db1f6eSAlexander Yarygin ((ipa0 << 8) | ((insn >> rshift) & mask)) : 23305db1f6eSAlexander Yarygin 23405db1f6eSAlexander Yarygin #define INSN_DECODE(insn) (insn >> 56) 23505db1f6eSAlexander Yarygin 23605db1f6eSAlexander Yarygin /* 23705db1f6eSAlexander Yarygin * The macro icpt_insn_decoder() takes an intercepted instruction 23805db1f6eSAlexander Yarygin * and returns a key, which can be used to find a mnemonic name 23905db1f6eSAlexander Yarygin * of the instruction in the icpt_insn_codes table. 24005db1f6eSAlexander Yarygin */ 24116a0c4c3SDavid Hildenbrand #define icpt_insn_decoder(insn) ( \ 24205db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0x01, insn, 48, 0xff) \ 24305db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xaa, insn, 48, 0x0f) \ 24405db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xb2, insn, 48, 0xff) \ 24505db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xb9, insn, 48, 0xff) \ 24605db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xe3, insn, 48, 0xff) \ 24705db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xe5, insn, 48, 0xff) \ 24805db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xeb, insn, 16, 0xff) \ 24905db1f6eSAlexander Yarygin INSN_DECODE_IPA0(0xc8, insn, 48, 0x0f) \ 25016a0c4c3SDavid Hildenbrand INSN_DECODE(insn)) 25105db1f6eSAlexander Yarygin 252ceae283bSAlexander Yarygin #endif /* _UAPI_ASM_S390_SIE_H */ 253