126 lines
4.3 KiB
ArmAsm
126 lines
4.3 KiB
ArmAsm
.include "t-macros.i"
|
|
|
|
.section .rodata
|
|
|
|
.text
|
|
.globl main
|
|
.type main,@function
|
|
main:
|
|
mvfc r0, PSW || ldi.s r14, #0
|
|
ldi.l r2, 0x100 ; MOD_E
|
|
ldi.l r3, 0x108 ; MOD_S
|
|
|
|
test_mod_dec_ld:
|
|
mvtc r2, MOD_E || bseti r0, #7
|
|
mvtc r3, MOD_S
|
|
mvtc r0, PSW ; modulo mode enable
|
|
mv r1,r3 ; r1=0x108
|
|
ld r4, @r1- || nop ; r1=0x106
|
|
ld r4, @r1- || nop ; r1=0x104
|
|
ld r4, @r1- || nop ; r1=0x102
|
|
ld r4, @r1- || nop ; r1=0x100
|
|
ld r4, @r1- || nop ; r1=0x108
|
|
ld r4, @r1- || nop ; r1=0x106
|
|
|
|
cmpeqi r1,#0x106
|
|
brf0f _ERR ; branch to error
|
|
|
|
test_mod_inc_ld:
|
|
mvtc r2, MOD_S
|
|
mvtc r3, MOD_E
|
|
mv r1,r2 ; r1=0x100
|
|
ld r4, @r1+ || nop ; r1=0x102
|
|
ld r4, @r1+ || nop ; r1=0x104
|
|
ld r4, @r1+ || nop ; r1=0x106
|
|
ld r4, @r1+ || nop ; r1=0x108
|
|
ld r4, @r1+ || nop ; r1=0x100
|
|
ld r4, @r1+ || nop ; r1=0x102
|
|
|
|
cmpeqi r1,#0x102
|
|
brf0f _ERR
|
|
|
|
test_mod_dec_ld2w:
|
|
mvtc r2, MOD_E
|
|
mvtc r3, MOD_S
|
|
mv r1,r3 ; r1=0x108
|
|
ld2W r4, @r1- || nop ; r1=0x104
|
|
ld2W r4, @r1- || nop ; r1=0x100
|
|
ld2W r4, @r1- || nop ; r1=0x108
|
|
ld2W r4, @r1- || nop ; r1=0x104
|
|
|
|
cmpeqi r1,#0x104
|
|
brf0f _ERR ; <= branch to error
|
|
|
|
test_mod_inc_ld2w:
|
|
mvtc r2, MOD_S
|
|
mvtc r3, MOD_E || BCLRI r0, #7
|
|
mv r1,r2 ; r1=0x100
|
|
ld2W r4, @r1+ || nop ; r1=0x104
|
|
ld2W r4, @r1+ || nop ; r1=0x108
|
|
ld2W r4, @r1+ || nop ; r1=0x100
|
|
ld2W r4, @r1+ || nop ; r1=0x104
|
|
|
|
cmpeqi r1,#0x104
|
|
brf0f _ERR
|
|
|
|
test_mod_dec_ld_dis:
|
|
mvtc r0, PSW ; modulo mode disable
|
|
mvtc r2, MOD_E
|
|
mvtc r3, MOD_S
|
|
mv r1,r3 ; r1=0x108
|
|
ld r4, @r1- || nop ; r1=0x106
|
|
ld r4, @r1- || nop ; r1=0x104
|
|
ld r4, @r1- || nop ; r1=0x102
|
|
ld r4, @r1- || nop ; r1=0x100
|
|
ld r4, @r1- || nop ; r1=0xFE
|
|
ld r4, @r1- || nop ; r1=0xFC
|
|
|
|
cmpeqi r1,#0xFC
|
|
brf0f _ERR
|
|
|
|
test_mod_inc_ld_dis:
|
|
mvtc r2, MOD_S
|
|
mvtc r3, MOD_E
|
|
mv r1,r2 ; r1=0x100
|
|
ld r4, @r1+ || nop ; r1=0x102
|
|
ld r4, @r1+ || nop ; r1=0x104
|
|
ld r4, @r1+ || nop ; r1=0x106
|
|
ld r4, @r1+ || nop ; r1=0x108
|
|
ld r4, @r1+ || nop ; r1=0x10A
|
|
ld r4, @r1+ || nop ; r1=0x10C
|
|
|
|
cmpeqi r1,#0x10C
|
|
brf0f _ERR
|
|
|
|
test_mod_dec_ld2w_dis:
|
|
mvtc r2, MOD_E
|
|
mvtc r3, MOD_S
|
|
mv r1,r3 ; r1=0x108
|
|
ld2W r4, @r1- || nop ; r1=0x104
|
|
ld2W r4, @r1- || nop ; r1=0x100
|
|
ld2W r4, @r1- || nop ; r1=0xFC
|
|
ld2W r4, @r1- || nop ; r1=0xF8
|
|
|
|
cmpeqi r1,#0xF8
|
|
brf0f _ERR
|
|
|
|
test_mod_inc_ld2w_dis:
|
|
mvtc r2, MOD_S
|
|
mvtc r3, MOD_E
|
|
mv r1,r2 ; r1=0x100
|
|
ld2W r4, @r1+ || nop ; r1=0x104
|
|
ld2W r4, @r1+ || nop ; r1=0x108
|
|
ld2W r4, @r1+ || nop ; r1=0x10C
|
|
ld2W r4, @r1+ || nop ; r1=0x110
|
|
|
|
cmpeqi r1,#0x110
|
|
brf0f _ERR
|
|
|
|
_OK:
|
|
exit0
|
|
|
|
_ERR:
|
|
exit47
|
|
|
|
|
|
|