.org 0x8d ilc: .org 0x8e program_interruption_code: .org 0x94 monitor_class: .org 0xb0 monitor_code: .org 0x150 program_old_psw: .org 0x1d0 /* program new PSW */ .quad 0x180000000,pgm /* 64-bit mode */ .org 0x200 /* lowcore padding */ .globl _start _start: stctg %c8,%c8,c8 /* enable only monitor class 1 */ mvhhi c8+6,0x4000 lctlg %c8,%c8,c8 mc_nop: mc 123,0 mc_monitor_event: mc 321,1 j failure mc_specification: mc 333,16 j failure pgm: lgrl %r0,program_old_psw+8 /* ilc adjustment */ llgc %r1,ilc sgr %r0,%r1 larl %r1,mc_monitor_event /* dispatch based on old PSW */ cgrje %r0,%r1,pgm_monitor_event larl %r1,mc_specification cgrje %r0,%r1,pgm_specification j failure pgm_monitor_event: chhsi program_interruption_code,0x40 /* monitor event? */ jne failure chhsi monitor_class,1 /* class from mc_monitor_event? */ jne failure cghsi monitor_code,321 /* code from mc_monitor_event? */ jne failure j mc_specification /* next test */ pgm_specification: chhsi program_interruption_code,6 /* specification exception? */ jne failure lpswe success_psw failure: lpswe failure_psw .align 8 c8: .quad 0 success_psw: .quad 0x2000000000000,0xfff /* see is_special_wait_psw() */ failure_psw: .quad 0x2000000000000,0 /* disabled wait */