1 ; Modular address postincrement/postdecrement test 2 3start: 4 ; program PSW for modular address mode 5 add r1,r0,0x81000000 6 nop || nop 7 mvtsys psw,r1 || nop 8 nop || nop 9 10test1: 11 ; set modular address limits: 0x18 bytes 12 add r1,r0,0x20000070 ; [start, ... 13 nop || nop 14 mvtsys mod_s,r1 || nop 15 nop || nop 16 add r1,r0,0x20000088 ; ..., end) 17 nop || nop 18 mvtsys mod_e,r1 || nop 19 20 ; modular autoincrement test 21 add r30,r0,0x20000070 ; base address = mod_s 22 ld2w r40,@(r30+,r0) || nop ; after: r30 = ...078 23 ld2w r40,@(r30+,r0) || nop ; after: r30 = ...080 24 ld2w r40,@(r30+,r0) || nop ; after: r30 = ...070 25 26 add r29,r0,0x20000070 ; expected end address; wrapping around 27 cmpeq f1,r30,r29 28 bra/xf fail 29 30test2: 31 ; set modular address limits: 0x18 bytes 32 add r1,r0,0x20000088 ; [start, ... 33 nop || nop 34 mvtsys mod_s,r1 || nop 35 nop || nop 36 add r1,r0,0x20000070 ; ..., end) 37 nop || nop 38 mvtsys mod_e,r1 || nop 39 40 ; modular autodecrement test 41 add r30,r0,0x20000088 ; base address = mod_s 42 ld2w r40,@(r30-,r0) || nop ; after: r30 = ...080 43 ld2w r40,@(r30-,r0) || nop ; after: r30 = ...078 44 ld2w r40,@(r30-,r0) || nop ; after: r30 = ...088 45 46 add r29,r0,0x20000088 ; expected end address; wrapping around 47 cmpeq f1,r30,r29 48 bra/xf fail 49 50ok: 51 add r2,r0,0 52 .long 0x0e000004, 0x00f00000 53 54fail: 55 add r2,r0,47 56 .long 0x0e000004, 0x00f00000 57