360 Assembly/Privileged Instructions

Privileged Instructions are programming instructions that need to be restrited to the operating system in order to protect system resources, system integrity, or system security. These include, but are not limited to:

  • I/O instructions. To make sure two programs do not try to write to a printer, or edit a database record, or other errors that could corrupt files, a program issues I/O requests to the operating system, and it handles these operations.
  • Load PSW. The PSW (program status word) contains the status about the computer and the currently executing job.
  • Insert storage key, set storage key. Change or read any memory.
  • Page table functions. Contaminate other jobs, lose pages swapped out to disc, corrupt memory and/or other jobs.
  • Diagnose. Used by operating systems to issue requests to the hypervisor.

Programs that do not have privileges are known as "problem" programs. Without protecting the PSW, page tables, or I/O devices, problem programs could:

  • Grant themselves privileges
  • Allow themselves to reset their storage key, allowing them to change any memory
  • Rewrite, contaminate or destroy page tables, losing or corrupting other jobs
  • Change the system date and time
  • Halt the machine

Anyone having heard about or seen the effects of malware or ransomware can understand the kind of damage a rogue privileged program do to a computer. Unless you have your own machine (like using the Hercules emulator on Linux, Mac, Raspberry Pi, or Windows, and don't care if something in the virtual environment is damaged), or you know exactly what you're doing, it's probably best to restrict privileged functions to the operating system than allow just anyone to use them willy-nilly. However, because sometimes problem programs in a production environment legitimately have a need to execute privileged instructions or access operating system tables or memory belonging to another process, many installations will install a "private" SVC routine ("private" in that is only set up on that machine, and is not part of the "stock" operating system supplied by the developer) and that SVC either grants privileged state to that process or changes an operating system table to grant the program additional privilege(s). Often the same SVC can be used to reset the request, revoking the privilege.

These are the privileged instructions: Legend:

  •         Available on all models unless indicated by (360 only) or (360 & 370 only)
  •         Available on the 370, 390 and z/System
  •         Available on the 390 and z/System
  •         Available only on the z/System

Using any of these in a problem (unprivileged) program will cause a protection exception. Using one of these instructions in a privileged program on the wrong class of machine will cause an operation exception.

Opcode
(Hex)

Mnemonic

Description
08 SSK Set Storage Key (360 only)
09 ISK Insert Storage Key (360 only)
82 LPSW Load Program Status Word
84 WRD Write Direct (360 only)
85 RDD Read Direct (360 Only)
9C SIO Start I/O (360 Only)
9D TIO Test I/O (360 Only)
9D01 CLRIO CLeaR I/O (370 only)
9E HIO Halt I/O (360 only}
9F TCH Test CHannel (360 & 370 only)
B200 CONCS Connect Channel Set
B201 DISCS DISconnect Channel Set
B202 STIDP Store CPU ID
B204 SCK Set Clock
B206 SCKC Set Clock Comparator
B207 STCKC Store Clock Comparator
B208 SPT Set CPU Timer
B209 STPT Store CPU Timer
B20A SPKA Set PSW Key From Address
B20B IPK Insert PSW Key
B20D PTLB Purge TLB
B210 SPX Set Prefix
B211 STPX Store Prefix
B212 STAP Store CPU Address
B213 RRB Reset Reference Bit
B221 IPTE Invalidate Page Table Entry
B223 IVSK Insert Virtual Storage Key
B224 IAC Insert Address Space Control
B225 SSAR Set Secondary ASN
B226 EPAR Extract Primary ASN
B227 ESAR Extract Secondary ASN
B228 PT Program Transfer
B229 ISKE Insert Storage Key Extended
B22A RRBE Reset Storage Key Extended
B22B SSKE Set Storage Key Extended
B22C TB Test Block
B22E PGIN Page In
B22F PGOUT Page Out
B230 CSCH Clear SubCHannel
B231 HSCH Halt SubCHannel
B232 MSCH Modify SubCHannel
B233 SSCH Start SubCHannel
B234 STSCH Store SubCHannel
B235 TSCH Test SubCHannel
B236 TPI Test Pending Interruption
B237 SAL Set Address Limit
B238 RSCH Resume SubCHannel
B239 STCRW Store Channel Report Word
B23A STCPS Store Channel Path Status
B23B RCHP Reset Channel Path
B23C SCHM Set Channel Monitor
B246 STURA STore Using Real Address
B248 PALB Purge ALB
B24B LURA Load Using Real Address
B254 MVPG Move Page
B277 RP Resume Program
B2B1 STFL Store Facility List
B2B2 LPSWE Load PSW Extended
B6 STCTL Store ConTroL
B7 LCTL Load ConTroL
B905 LURAG Load Using Real Address (64 bit)
B925 STURG Store Using Real Address
B928 PCKMO Perform Cryptographic Key Mgmt Operations
B98E IDTE Invalidate DAT Table Entry
B98F CRDTE Compare and Replace DAT Table Entry
B99A EPAIR Extract Primary ASN and Instance
B99B ESAIR Extract Secondary ASN and Instance
B99D ESEA Extract and Set Extended Authority
B99E PTI Program Transfer with Instance
B99F SSAIR Set Secondary ASN and Instance
B9A1 TPEI Test Pending External Interruption
B9A2 PTF Perform Topology Function
B9AA LPTEA Load Page Table Entry Address
B9AE RRBM Reset Reference Bits Multiple
B9AF PFMF Perform Frame Management Function
E500 LASP Load Address Space Parameters
E501 TPROT Test PROTection
E502 STRAG STore Real Address Grande
EB0F TRACG TRACe Grande
EB25 STCTG STore ConTrol (64)
EB2F LCTLG Load Control (64)
360 Assembly Language
360 Family Introduction · Basic FAQ · 360 Family · 360 Architecture
360 Instruction Set 360 Instructions · Branch Instructions · Data Transfer Instructions · Control Flow Instructions · Arithmetic Instructions · Logic Instructions · Shift and Rotate Instructions · Priveleged Instructions · Other Instructions
Syntaxes and Assemblers 360 Assemblers· Pseudo Instructions
Instruction Extensions Floating Point · High-Level Languages