# fr30 testcase for
|
# fr30 testcase for
|
# mach(): fr30
|
# mach(): fr30
|
# ld $Rj,$Ri
|
# ld $Rj,$Ri
|
# ld @($R13,$Rj),$Ri
|
# ld @($R13,$Rj),$Ri
|
# ld @($R14,$disp10),$Ri
|
# ld @($R14,$disp10),$Ri
|
# ld @($R15,$udisp6),$Ri
|
# ld @($R15,$udisp6),$Ri
|
# ld @$R15+,$Ri
|
# ld @$R15+,$Ri
|
# ld @$R15+,$Rs
|
# ld @$R15+,$Rs
|
|
|
.include "testutils.inc"
|
.include "testutils.inc"
|
|
|
START
|
START
|
|
|
.text
|
.text
|
.global ld
|
.global ld
|
ld:
|
ld:
|
; Test ld $Rj,$Ri
|
; Test ld $Rj,$Ri
|
mvi_h_mem #0x00000000,sp
|
mvi_h_mem #0x00000000,sp
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @sp,r7
|
ld @sp,r7
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0,r7
|
test_h_gr 0,r7
|
|
|
mvi_h_mem #0x00000001,sp
|
mvi_h_mem #0x00000001,sp
|
set_cc 0x07 ; condition codes should not change
|
set_cc 0x07 ; condition codes should not change
|
ld @sp,r7
|
ld @sp,r7
|
test_cc 0 1 1 1
|
test_cc 0 1 1 1
|
test_h_gr 1,r7
|
test_h_gr 1,r7
|
|
|
mvi_h_mem #0x7fffffff,sp
|
mvi_h_mem #0x7fffffff,sp
|
set_cc 0x0b ; condition codes should not change
|
set_cc 0x0b ; condition codes should not change
|
ld @sp,r7
|
ld @sp,r7
|
test_cc 1 0 1 1
|
test_cc 1 0 1 1
|
test_h_gr 0x7fffffff,r7
|
test_h_gr 0x7fffffff,r7
|
|
|
mvi_h_mem #0x80000000,sp
|
mvi_h_mem #0x80000000,sp
|
set_cc 0x0d ; condition codes should not change
|
set_cc 0x0d ; condition codes should not change
|
ld @sp,r7
|
ld @sp,r7
|
test_cc 1 1 0 1
|
test_cc 1 1 0 1
|
test_h_gr 0x80000000,r7
|
test_h_gr 0x80000000,r7
|
|
|
mvi_h_mem #0xffffffff,sp
|
mvi_h_mem #0xffffffff,sp
|
set_cc 0x0e ; condition codes should not change
|
set_cc 0x0e ; condition codes should not change
|
ld @sp,r7
|
ld @sp,r7
|
test_cc 1 1 1 0
|
test_cc 1 1 1 0
|
test_h_gr -1,r7
|
test_h_gr -1,r7
|
|
|
; Test ld @($R13,$Rj),$Ri
|
; Test ld @($R13,$Rj),$Ri
|
mvr_h_gr sp,r13
|
mvr_h_gr sp,r13
|
inci_h_gr -8,r13
|
inci_h_gr -8,r13
|
mvi_h_gr 8,r8
|
mvi_h_gr 8,r8
|
|
|
mvi_h_mem #0x00000000,sp
|
mvi_h_mem #0x00000000,sp
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @(r13,r8),r7
|
ld @(r13,r8),r7
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0,r7
|
test_h_gr 0,r7
|
|
|
mvi_h_mem #0x00000001,sp
|
mvi_h_mem #0x00000001,sp
|
set_cc 0x07 ; condition codes should not change
|
set_cc 0x07 ; condition codes should not change
|
ld @(r13,r8),r7
|
ld @(r13,r8),r7
|
test_cc 0 1 1 1
|
test_cc 0 1 1 1
|
test_h_gr 1,r7
|
test_h_gr 1,r7
|
|
|
mvi_h_mem #0x7fffffff,sp
|
mvi_h_mem #0x7fffffff,sp
|
set_cc 0x0b ; condition codes should not change
|
set_cc 0x0b ; condition codes should not change
|
ld @(r13,r8),r7
|
ld @(r13,r8),r7
|
test_cc 1 0 1 1
|
test_cc 1 0 1 1
|
test_h_gr 0x7fffffff,r7
|
test_h_gr 0x7fffffff,r7
|
|
|
mvi_h_mem #0x80000000,sp
|
mvi_h_mem #0x80000000,sp
|
set_cc 0x0d ; condition codes should not change
|
set_cc 0x0d ; condition codes should not change
|
ld @(r13,r8),r7
|
ld @(r13,r8),r7
|
test_cc 1 1 0 1
|
test_cc 1 1 0 1
|
test_h_gr 0x80000000,r7
|
test_h_gr 0x80000000,r7
|
|
|
mvi_h_mem #0xffffffff,sp
|
mvi_h_mem #0xffffffff,sp
|
set_cc 0x0e ; condition codes should not change
|
set_cc 0x0e ; condition codes should not change
|
ld @(r13,r8),r7
|
ld @(r13,r8),r7
|
test_cc 1 1 1 0
|
test_cc 1 1 1 0
|
test_h_gr -1,r7
|
test_h_gr -1,r7
|
|
|
; Test ld @($R14,$disp10),$Ri
|
; Test ld @($R14,$disp10),$Ri
|
mvi_h_mem #0xdeadbeef,sp
|
mvi_h_mem #0xdeadbeef,sp
|
mvr_h_gr sp,r14
|
mvr_h_gr sp,r14
|
mvi_h_gr -0x1fc,r8
|
mvi_h_gr -0x1fc,r8
|
add_h_gr r8,r14
|
add_h_gr r8,r14
|
|
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @(r14,0x1fc),r7
|
ld @(r14,0x1fc),r7
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0xfc,r14
|
inci_h_gr 0xfc,r14
|
set_cc 0x07 ; condition codes should not change
|
set_cc 0x07 ; condition codes should not change
|
ld @(r14,0x100),r7
|
ld @(r14,0x100),r7
|
test_cc 0 1 1 1
|
test_cc 0 1 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0x100,r14
|
inci_h_gr 0x100,r14
|
set_cc 0x0b ; condition codes should not change
|
set_cc 0x0b ; condition codes should not change
|
ld @(r14,0x0),r7
|
ld @(r14,0x0),r7
|
test_cc 1 0 1 1
|
test_cc 1 0 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0x100,r14
|
inci_h_gr 0x100,r14
|
set_cc 0x0d ; condition codes should not change
|
set_cc 0x0d ; condition codes should not change
|
ld @(r14,-0x100),r7
|
ld @(r14,-0x100),r7
|
test_cc 1 1 0 1
|
test_cc 1 1 0 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0x100,r14
|
inci_h_gr 0x100,r14
|
set_cc 0x0e ; condition codes should not change
|
set_cc 0x0e ; condition codes should not change
|
ld @(r14,-0x200),r7
|
ld @(r14,-0x200),r7
|
test_cc 1 1 1 0
|
test_cc 1 1 1 0
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
; Test ld @($R15,$udisp6),$Ri
|
; Test ld @($R15,$udisp6),$Ri
|
mvi_h_mem #0xdeadbeef,sp
|
mvi_h_mem #0xdeadbeef,sp
|
mvr_h_gr sp,r14
|
mvr_h_gr sp,r14
|
mvi_h_gr -0x3c,r8
|
mvi_h_gr -0x3c,r8
|
add_h_gr r8,r14
|
add_h_gr r8,r14
|
|
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @(r14,0x3c),r7
|
ld @(r14,0x3c),r7
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0x1c,r14
|
inci_h_gr 0x1c,r14
|
set_cc 0x07 ; condition codes should not change
|
set_cc 0x07 ; condition codes should not change
|
ld @(r14,0x20),r7
|
ld @(r14,0x20),r7
|
test_cc 0 1 1 1
|
test_cc 0 1 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
inci_h_gr 0x20,r14
|
inci_h_gr 0x20,r14
|
set_cc 0x0b ; condition codes should not change
|
set_cc 0x0b ; condition codes should not change
|
ld @(r14,0x0),r7
|
ld @(r14,0x0),r7
|
test_cc 1 0 1 1
|
test_cc 1 0 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
|
|
; Test ld @$R15+,$Ri
|
; Test ld @$R15+,$Ri
|
mvr_h_gr sp,r8 ; save original stack pointer
|
mvr_h_gr sp,r8 ; save original stack pointer
|
mvr_h_gr r8,r9
|
mvr_h_gr r8,r9
|
inci_h_gr 4,r9 ; original stack pointer + 4
|
inci_h_gr 4,r9 ; original stack pointer + 4
|
mvi_h_mem #0xdeadbeef,sp ; prime memory
|
mvi_h_mem #0xdeadbeef,sp ; prime memory
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,r7
|
ld @r15+,r7
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0xdeadbeef,r7
|
test_h_gr 0xdeadbeef,r7
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,sp
|
ld @r15+,sp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
|
|
; Test ld @$R15+,$Rs
|
; Test ld @$R15+,$Rs
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,tbr
|
ld @r15+,tbr
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,tbr
|
test_h_dr 0xdeadbeef,tbr
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,rp
|
ld @r15+,rp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,rp
|
test_h_dr 0xdeadbeef,rp
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,mdh
|
ld @r15+,mdh
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,mdh
|
test_h_dr 0xdeadbeef,mdh
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,mdl
|
ld @r15+,mdl
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,mdl
|
test_h_dr 0xdeadbeef,mdl
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
set_s_user
|
set_s_user
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,ssp
|
ld @r15+,ssp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,ssp
|
test_h_dr 0xdeadbeef,ssp
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,usp
|
ld @r15+,usp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,usp
|
test_h_dr 0xdeadbeef,usp
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
|
|
set_s_system
|
set_s_system
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,usp
|
ld @r15+,usp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,usp
|
test_h_dr 0xdeadbeef,usp
|
testr_h_gr sp,r9 ; should have been incremented
|
testr_h_gr sp,r9 ; should have been incremented
|
|
|
mvr_h_gr r8,sp ; restore original stack pointer
|
mvr_h_gr r8,sp ; restore original stack pointer
|
set_cc 0x0f ; condition codes should not change
|
set_cc 0x0f ; condition codes should not change
|
ld @r15+,ssp
|
ld @r15+,ssp
|
test_cc 1 1 1 1
|
test_cc 1 1 1 1
|
test_h_dr 0xdeadbeef,ssp
|
test_h_dr 0xdeadbeef,ssp
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
test_h_gr 0xdeadbeef,sp ; should not have been incremented
|
|
|
pass
|
pass
|
|
|