/* * Copyright (C) 1991 by the University of Waterloo.All rights reserved. * * opcodes -- symbolic definitions for System/370 instructions * * Ref. System/370 Reference Summary (GX20-1850), ESA/370 Principles * of Operation (SA22-7200). */ #ifndef _OPCODES_H_INCLUDED #define _OPCODES_H_INCLUDED #define OP_PR 0x0101 /* program return */ #define OP_UPT 0x0102 /* update tree */ #define OP_SPM 0x0400 /* set program mask */ #define OP_BALR 0x0500 /* branch and link */ #define OP_BCTR 0x0600 /* branch on count */ #define OP_BCR 0x0700 /* branch on condition */ #define OP_SSK 0x0800 /* set storage key */ #define OP_ISK 0x0900 /* insert storage key */ #define OP_SVC 0x0a00 /* supervisor call */ #define OP_BSM 0x0b00 /* branch and set mode */ #define OP_BASSM 0x0c00 /* branch and save and set mode */ #define OP_BASR 0x0d00 /* branch and save */ #define OP_MVCL 0x0e00 /* move long */ #define OP_CLCL 0x0f00 /* compare logical long */ #define OP_LPR 0x1000 /* load positive */ #define OP_LNR 0x1100 /* load negative */ #define OP_LTR 0x1200 /* load and test */ #define OP_LCR 0x1300 /* load complement */ #define OP_NR 0x1400 /* and */ #define OP_CLR 0x1500 /* compare logical */ #define OP_OR 0x1600 /* or */ #define OP_XR 0x1700 /* exclusive or */ #define OP_LR 0x1800 /* load */ #define OP_CR 0x1900 /* compare */ #define OP_AR 0x1a00 /* add */ #define OP_SR 0x1b00 /* subtract */ #define OP_MR 0x1c00 /* multiply */ #define OP_DR 0x1d00 /* divide */ #define OP_ALR 0x1e00 /* add logical */ #define OP_SLR 0x1f00 /* subtract logical */ #define OP_LPDR 0x2000 /* load positive (long) */ #define OP_LNDR 0x2100 /* load negative (long) */ #define OP_LTDR 0x2200 /* load and test (long) */ #define OP_LCDR 0x2300 /* load complement (long) */ #define OP_HDR 0x2400 /* halve (long) */ #define OP_LRDR 0x2500 /* load rounded (extended to long) */ #define OP_MXR 0x2600 /* multiply (extended) */ #define OP_MXDR 0x2700 /* multiply (long to extended) */ #define OP_LDR 0x2800 /* load (long) */ #define OP_CDR 0x2900 /* compare (long) */ #define OP_ADR 0x2a00 /* add normalized (long) */ #define OP_SDR 0x2b00 /* subtract normalized (long) */ #define OP_MDR 0x2c00 /* multiply (long) */ #define OP_DDR 0x2d00 /* divide (long) */ #define OP_AWR 0x2e00 /* add unnormalized (long) */ #define OP_SWR 0x2f00 /* subtract unnormalized (long) */ #define OP_LPER 0x3000 /* load positive (short) */ #define OP_LNER 0x3100 /* load negative (short) */ #define OP_LTER 0x3200 /* load and test (short) */ #define OP_LCER 0x3300 /* load complement (short) */ #define OP_HER 0x3400 /* halve (short) */ #define OP_LRER 0x3500 /* load rounded (long to short) */ #define OP_AXR 0x3600 /* add normalized (extended) */ #define OP_SXR 0x3700 /* subtract normalized (extended) */ #define OP_LER 0x3800 /* load (short) */ #define OP_CER 0x3900 /* compare (short) */ #define OP_AER 0x3a00 /* add normalized (short) */ #define OP_SER 0x3b00 /* subtract normalized (short) */ #define OP_MER 0x3c00 /* multiply (short to long) */ #define OP_DER 0x3d00 /* divide (short) */ #define OP_AUR 0x3e00 /* add unnormalized (short) */ #define OP_SUR 0x3f00 /* subtract unnormalized (short) */ #define OP_STH 0x4000 /* store halfword */ #define OP_LA 0x4100 /* load address */ #define OP_STC 0x4200 /* store character */ #define OP_IC 0x4300 /* insert character */ #define OP_EX 0x4400 /* execute */ #define OP_BAL 0x4500 /* branch and link */ #define OP_BCT 0x4600 /* branch on count */ #define OP_BC 0x4700 /* branch on condition */ #define OP_LH 0x4800 /* load halfword */ #define OP_CH 0x4900 /* compare halfword */ #define OP_AH 0x4a00 /* add halfword */ #define OP_SH 0x4b00 /* subtract halfword */ #define OP_MH 0x4c00 /* multiply halfword */ #define OP_BAS 0x4d00 /* branch and save */ #define OP_CVD 0x4e00 /* convert to decimal */ #define OP_CVB 0x4f00 /* convert to binary */ #define OP_ST 0x5000 /* store */ #define OP_LAE 0x5100 /* load address extended */ #define OP_N 0x5400 /* and */ #define OP_CL 0x5500 /* compare logical */ #define OP_O 0x5600 /* or */ #define OP_X 0x5700 /* exclusive or */ #define OP_L 0x5800 /* load */ #define OP_C 0x5900 /* compare */ #define OP_A 0x5a00 /* add */ #define OP_S 0x5b00 /* subtract */ #define OP_M 0x5c00 /* multiply */ #define OP_D 0x5d00 /* divide */ #define OP_AL 0x5e00 /* add logical */ #define OP_SL 0x5f00 /* subtract logical */ #define OP_STD 0x6000 /* store (long) */ #define OP_MXD 0x6700 /* multiply (long to extended) */ #define OP_LD 0x6800 /* load (long) */ #define OP_CD 0x6900 /* compare (long) */ #define OP_AD 0x6a00 /* add normalized (long) */ #define OP_SD 0x6b00 /* subtract normalized (long) */ #define OP_MD 0x6c00 /* multiply (long) */ #define OP_DD 0x6d00 /* divide (long) */ #define OP_AW 0x6e00 /* add unnormalized (long) */ #define OP_SW 0x6f00 /* subtract unnormalized (long) */ #define OP_STE 0x7000 /* store (short) */ #define OP_LE 0x7800 /* load (short) */ #define OP_CE 0x7900 /* compare (short) */ #define OP_AE 0x7a00 /* add normalized (short) */ #define OP_SE 0x7b00 /* subtract normalized (short) */ #define OP_ME 0x7c00 /* multiply (short to long) */ #define OP_DE 0x7d00 /* divide (short) */ #define OP_AU 0x7e00 /* add unnormalized (short) */ #define OP_SU 0x7f00 /* subtract unnormalized (short) */ #define OP_SSM 0x8000 /* set system mask */ #define OP_LPSW 0x8200 /* load PSW */ #define OP_DIAG 0x8300 /* diagnose */ #define OP_WRD 0x8400 /* write direct */ #define OP_RDD 0x8500 /* read direct */ #define OP_BXH 0x8600 /* branch on index high */ #define OP_BXLE 0x8700 /* branch on index low or equal */ #define OP_SRL 0x8800 /* shift right single logical */ #define OP_SLL 0x8900 /* shift left single logical */ #define OP_SRA 0x8a00 /* shift right single */ #define OP_SLA 0x8b00 /* shift left single */ #define OP_SRDL 0x8c00 /* shift right double logical */ #define OP_SLDL 0x8d00 /* shift left double logical */ #define OP_SRDA 0x8e00 /* shift right double */ #define OP_SLDA 0x8f00 /* shift left double */ #define OP_STM 0x9000 /* store multiple */ #define OP_TM 0x9100 /* test under mask */ #define OP_MVI 0x9200 /* move (immediate) */ #define OP_TS 0x9300 /* test and set */ #define OP_NI 0x9400 /* and (immediate) */ #define OP_CLI 0x9500 /* compare logical (immediate) */ #define OP_OI 0x9600 /* or (immediate) */ #define OP_XI 0x9700 /* exclusive or (immediate) */ #define OP_LM 0x9800 /* load multiple */ #define OP_TRACE 0x9900 /* trace */ #define OP_LAM 0x9a00 /* load access multiple */ #define OP_STAM 0x9b00 /* store access multiple */ #define OP_SIO 0x9c00 /* start I/O */ #define OP_SIOF 0x9c01 /* start I/O fast release */ #define OP_RIO 0x9c02 /* resume I/O */ #define OP_TIO 0x9d00 /* test I/O */ #define OP_CLRIO 0x9d01 /* clear I/O */ #define OP_HIO 0x9e00 /* halt I/O */ #define OP_HDV 0x9e01 /* halt device */ #define OP_TCH 0x9f00 /* test channel */ #define OP_CLRCH 0x9f01 /* clear channel */ #define OP_STNSM 0xac00 /* store then and system mask */ #define OP_STOSM 0xad00 /* store then or system mask */ #define OP_SIGP 0xae00 /* signal processor */ #define OP_MC 0xaf00 /* monitor call */ #define OP_LRA 0xb100 /* load real address */ #define OP_CONCS 0xb200 /* connect channel set */ #define OP_DISCS 0xb201 /* disconnect channel set */ #define OP_STIDP 0xb202 /* store CPU id */ #define OP_STIDC 0xb203 /* store channel id */ #define OP_SCK 0xb204 /* set clock */ #define OP_STCK 0xb205 /* store clock */ #define OP_SCKC 0xb206 /* set clock comparator */ #define OP_STCKC 0xb207 /* store clock comparator */ #define OP_SPT 0xb208 /* set CPU timer */ #define OP_STPT 0xb209 /* store CPU timer */ #define OP_SPKA 0xb20a /* set PSW key from address */ #define OP_IPK 0xb20b /* insert PSW key */ #define OP_PTLB 0xb20d /* purge TLB */ #define OP_SPX 0xb210 /* set prefix */ #define OP_STPX 0xb211 /* store prefix */ #define OP_STAP 0xb212 /* store CPU address */ #define OP_RRB 0xb213 /* reset reference bit */ #define OP_PC 0xb218 /* program call */ #define OP_SAC 0xb219 /* set address space control */ #define OP_CFC 0xb21a /* compare and form codeword */ #define OP_IPTE 0xb221 /* invalidate page table entry */ #define OP_IPM 0xb222 /* insert program mask */ #define OP_IVSK 0xb223 /* insert virtual storage key */ #define OP_IAC 0xb224 /* insert address space control */ #define OP_SSAR 0xb225 /* set secondary ASN */ #define OP_EPAR 0xb226 /* extract primary ASN */ #define OP_ESAR 0xb227 /* extract secondary ASN */ #define OP_PT 0xb228 /* program transfer */ #define OP_ISKE 0xb229 /* insert storage key extended */ #define OP_RRBE 0xb22a /* reset reference bit extended */ #define OP_SSKE 0xb22b /* set storage key extended */ #define OP_TB 0xb22c /* test block */ #define OP_DXR 0xb22d /* divide (extended) */ #define OP_CSCH 0xb230 /* clear subchannel */ #define OP_HSCH 0xb231 /* halt subchannel */ #define OP_MSCH 0xb232 /* modify subchannel */ #define OP_SSCH 0xb233 /* start subchannel */ #define OP_STSCH 0xb234 /* store subchannel */ #define OP_TSCH 0xb235 /* test subchannel */ #define OP_TPI 0xb236 /* test pending interrupt */ #define OP_SAL 0xb237 /* set address limit */ #define OP_RSCH 0xb238 /* resume subchannel */ #define OP_STCRW 0xb239 /* store channel report word */ #define OP_STCPS 0xb23a /* store channel path status */ #define OP_RCHP 0xb23b /* reset channel path */ #define OP_SCHM 0xb23c /* set channel monitor */ #define OP_BAKR 0xb240 /* branch and stack */ #define OP_STURA 0xb246 /* store using real address */ #define OP_MSTA 0xb247 /* modified stacked state */ #define OP_PALB 0xb248 /* purge ALB */ #define OP_EREG 0xb249 /* extract stacked registers */ #define OP_ESTA 0xb24a /* extract stacked state */ #define OP_LURA 0xb24b /* load using real address */ #define OP_TAR 0xb24c /* test access */ #define OP_CPYA 0xb24d /* copy access */ #define OP_SAR 0xb24e /* set access */ #define OP_EAR 0xb24f /* extract access */ #define OP_STCTL 0xb600 /* store control */ #define OP_LCTL 0xb700 /* load control */ #define OP_CS 0xba00 /* compare and swap */ #define OP_CDS 0xbb00 /* compare double and swap */ #define OP_CLM 0xbd00 /* compare logical chars under mask */ #define OP_STCM 0xbe00 /* store characters under mask */ #define OP_ICM 0xbf00 /* insert characters under mask */ #define OP_MVN 0xd100 /* move numerics */ #define OP_MVC 0xd200 /* move (character) */ #define OP_MVZ 0xd300 /* move zones */ #define OP_NC 0xd400 /* and (character) */ #define OP_CLC 0xd500 /* compare logical (character) */ #define OP_OC 0xd600 /* or (character) */ #define OP_XC 0xd700 /* exclusive or (character) */ #define OP_MVCK 0xd900 /* move with key */ #define OP_MVCP 0xda00 /* move to primary */ #define OP_MVCS 0xdb00 /* move to secondary */ #define OP_TR 0xdc00 /* translate */ #define OP_TRT 0xdd00 /* translate and test */ #define OP_ED 0xde00 /* edit */ #define OP_EDMK 0xdf00 /* edit and mark */ #define OP_LASP 0xe500 /* load address space parameters */ #define OP_TPROT 0xe501 /* test protection */ #define OP_MVCSK 0xe50e /* move with source key */ #define OP_MVCDK 0xe50f /* move with destination key */ #define OP_MVCIN 0xe800 /* move inverse */ #define OP_SRP 0xf000 /* shift and round decimal */ #define OP_MVO 0xf100 /* move with offset */ #define OP_PACK 0xf200 /* pack */ #define OP_UNPK 0xf300 /* unpack */ #define OP_ZAP 0xf800 /* zero and add */ #define OP_CP 0xf900 /* compare decimal */ #define OP_AP 0xfa00 /* add decimal */ #define OP_SP 0xfb00 /* subtract decimal */ #define OP_MP 0xfc00 /* multiply decimal */ #define OP_DP 0xfd00 /* divide decimal */ #endif /* _OPCODES_H_INCLUDED */