30 lines
771 B
ArmAsm
30 lines
771 B
ArmAsm
|
.org 0x8e
|
||
|
program_interruption_code:
|
||
|
.org 0x1d0 /* program new PSW */
|
||
|
.quad 0,pgm
|
||
|
.org 0x200 /* lowcore padding */
|
||
|
.globl _start
|
||
|
_start:
|
||
|
lmg %r0,%r1,cksm_args
|
||
|
cksm %r2,%r0
|
||
|
c %r2,cksm_exp
|
||
|
jne failure
|
||
|
.insn rre,0xb2410000,%r2,%r15 /* cksm %r2,%r15 */
|
||
|
failure:
|
||
|
lpswe failure_psw
|
||
|
pgm:
|
||
|
chhsi program_interruption_code,6 /* specification exception? */
|
||
|
jne failure
|
||
|
lpswe success_psw
|
||
|
cksm_args:
|
||
|
.quad cksm_buf, 16
|
||
|
cksm_buf:
|
||
|
.quad 0xaaaabbbbcccc0000, 0x12345678
|
||
|
cksm_exp:
|
||
|
.long 0x89ab1234
|
||
|
.align 8
|
||
|
success_psw:
|
||
|
.quad 0x2000000000000,0xfff /* see is_special_wait_psw() */
|
||
|
failure_psw:
|
||
|
.quad 0x2000000000000,0 /* disabled wait */
|