OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [sim/] [testsuite/] [sim/] [h8300/] [ldm.s] - Diff between revs 24 and 33

Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 33
# Hitachi H8 testcase 'ldm', 'stm'
# Hitachi H8 testcase 'ldm', 'stm'
# mach(): all
# mach(): all
# as(h8300):    --defsym sim_cpu=0
# as(h8300):    --defsym sim_cpu=0
# as(h8300h):   --defsym sim_cpu=1
# as(h8300h):   --defsym sim_cpu=1
# as(h8300s):   --defsym sim_cpu=2
# as(h8300s):   --defsym sim_cpu=2
# as(h8sx):     --defsym sim_cpu=3
# as(h8sx):     --defsym sim_cpu=3
# ld(h8300h):   -m h8300helf
# ld(h8300h):   -m h8300helf
# ld(h8300s):   -m h8300self
# ld(h8300s):   -m h8300self
# ld(h8sx):     -m h8300sxelf
# ld(h8sx):     -m h8300sxelf
 
 
        .include "testutils.inc"
        .include "testutils.inc"
        .data
        .data
        .align 4
        .align 4
_stack: .long   0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0
_stack: .long   0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
_stack_top:
_stack_top:
 
 
        start
        start
 
 
.if (sim_cpu == h8300s || sim_cpu == h8sx)      ; Earlier versions, no exr
.if (sim_cpu == h8300s || sim_cpu == h8sx)      ; Earlier versions, no exr
stm_2reg:
stm_2reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack_top, er7
        mov     #_stack_top, er7
        mov     #2, er2
        mov     #2, er2
        mov     #3, er3
        mov     #3, er3
 
 
        set_ccr_zero
        set_ccr_zero
        stm     er2-er3, @-sp
        stm     er2-er3, @-sp
        test_cc_clear
        test_cc_clear
 
 
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 1
        test_gr_a5a5 1
        test_h_gr32  2  er2
        test_h_gr32  2  er2
        test_h_gr32  3  er3
        test_h_gr32  3  er3
        test_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_h_gr32  _stack_top-8, er7
        test_h_gr32  _stack_top-8, er7
 
 
        mov     @_stack_top-4, er0
        mov     @_stack_top-4, er0
        cmp     #2, er0
        cmp     #2, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-8, er0
        mov     @_stack_top-8, er0
        cmp     #3, er0
        cmp     #3, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-12, er0
        mov     @_stack_top-12, er0
        cmp     #0, er0
        cmp     #0, er0
        bne     fail1
        bne     fail1
 
 
stm_3reg:
stm_3reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack_top, er7
        mov     #_stack_top, er7
        mov     #4, er4
        mov     #4, er4
        mov     #5, er5
        mov     #5, er5
        mov     #6, er6
        mov     #6, er6
 
 
        set_ccr_zero
        set_ccr_zero
        stm     er4-er6, @-sp
        stm     er4-er6, @-sp
        test_cc_clear
        test_cc_clear
 
 
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 1
        test_gr_a5a5 1
        test_gr_a5a5 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        test_h_gr32  4  er4
        test_h_gr32  4  er4
        test_h_gr32  5  er5
        test_h_gr32  5  er5
        test_h_gr32  6  er6
        test_h_gr32  6  er6
        test_h_gr32  _stack_top-12, er7
        test_h_gr32  _stack_top-12, er7
 
 
        mov     @_stack_top-4, er0
        mov     @_stack_top-4, er0
        cmp     #4, er0
        cmp     #4, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-8, er0
        mov     @_stack_top-8, er0
        cmp     #5, er0
        cmp     #5, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-12, er0
        mov     @_stack_top-12, er0
        cmp     #6, er0
        cmp     #6, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-16, er0
        mov     @_stack_top-16, er0
        cmp     #0, er0
        cmp     #0, er0
        bne     fail1
        bne     fail1
 
 
stm_4reg:
stm_4reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack_top, er7
        mov     #_stack_top, er7
        mov     #1, er0
        mov     #1, er0
        mov     #2, er1
        mov     #2, er1
        mov     #3, er2
        mov     #3, er2
        mov     #4, er3
        mov     #4, er3
 
 
        set_ccr_zero
        set_ccr_zero
        stm     er0-er3, @-sp
        stm     er0-er3, @-sp
        test_cc_clear
        test_cc_clear
 
 
        test_h_gr32  1  er0
        test_h_gr32  1  er0
        test_h_gr32  2  er1
        test_h_gr32  2  er1
        test_h_gr32  3  er2
        test_h_gr32  3  er2
        test_h_gr32  4  er3
        test_h_gr32  4  er3
        test_gr_a5a5 4          ; Make sure other general regs not disturbed
        test_gr_a5a5 4          ; Make sure other general regs not disturbed
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_h_gr32  _stack_top-16, er7
        test_h_gr32  _stack_top-16, er7
 
 
        mov     @_stack_top-4, er0
        mov     @_stack_top-4, er0
        cmp     #1, er0
        cmp     #1, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-8, er0
        mov     @_stack_top-8, er0
        cmp     #2, er0
        cmp     #2, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-12, er0
        mov     @_stack_top-12, er0
        cmp     #3, er0
        cmp     #3, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-16, er0
        mov     @_stack_top-16, er0
        cmp     #4, er0
        cmp     #4, er0
        bne     fail1
        bne     fail1
 
 
        mov     @_stack_top-20, er0
        mov     @_stack_top-20, er0
        cmp     #0, er0
        cmp     #0, er0
        bne     fail1
        bne     fail1
 
 
ldm_2reg:
ldm_2reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack, er7
        mov     #_stack, er7
 
 
        set_ccr_zero
        set_ccr_zero
        ldm     @sp+, er2-er3
        ldm     @sp+, er2-er3
        test_cc_clear
        test_cc_clear
 
 
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 1
        test_gr_a5a5 1
        test_h_gr32  1  er2
        test_h_gr32  1  er2
        test_h_gr32  0   er3
        test_h_gr32  0   er3
        test_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_h_gr32  _stack+8, er7
        test_h_gr32  _stack+8, er7
 
 
ldm_3reg:
ldm_3reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack+4, er7
        mov     #_stack+4, er7
 
 
        set_ccr_zero
        set_ccr_zero
        ldm     @sp+, er4-er6
        ldm     @sp+, er4-er6
        test_cc_clear
        test_cc_clear
 
 
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
        test_gr_a5a5 1
        test_gr_a5a5 1
        test_gr_a5a5 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        test_h_gr32  3  er4
        test_h_gr32  3  er4
        test_h_gr32  2  er5
        test_h_gr32  2  er5
        test_h_gr32  1  er6
        test_h_gr32  1  er6
        test_h_gr32  _stack+16, er7
        test_h_gr32  _stack+16, er7
 
 
ldm_4reg:
ldm_4reg:
        set_grs_a5a5
        set_grs_a5a5
        mov     #_stack+4, er7
        mov     #_stack+4, er7
 
 
        set_ccr_zero
        set_ccr_zero
        ldm     @sp+, er0-er3
        ldm     @sp+, er0-er3
        test_cc_clear
        test_cc_clear
 
 
        test_h_gr32  4  er0
        test_h_gr32  4  er0
        test_h_gr32  3  er1
        test_h_gr32  3  er1
        test_h_gr32  2  er2
        test_h_gr32  2  er2
        test_h_gr32  1  er3
        test_h_gr32  1  er3
        test_gr_a5a5 4          ; Make sure other general regs not disturbed
        test_gr_a5a5 4          ; Make sure other general regs not disturbed
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_h_gr32  _stack+20, er7
        test_h_gr32  _stack+20, er7
.endif
.endif
 
 
pushpop:
pushpop:
        set_grs_a5a5
        set_grs_a5a5
.if (sim_cpu == h8300)
.if (sim_cpu == h8300)
        mov     #_stack_top, r7
        mov     #_stack_top, r7
        mov     #12, r1
        mov     #12, r1
        mov     #34, r2
        mov     #34, r2
        mov     #56, r3
        mov     #56, r3
        push    r1
        push    r1
        push    r2
        push    r2
        push    r3
        push    r3
        pop     r4
        pop     r4
        pop     r5
        pop     r5
        pop     r6
        pop     r6
 
 
        test_gr_a5a5 0           ; Make sure other general _reg_ not disturbed
        test_gr_a5a5 0           ; Make sure other general _reg_ not disturbed
        test_h_gr16  12 r1
        test_h_gr16  12 r1
        test_h_gr16  34 r2
        test_h_gr16  34 r2
        test_h_gr16  56 r3
        test_h_gr16  56 r3
        test_h_gr16  56 r4
        test_h_gr16  56 r4
        test_h_gr16  34 r5
        test_h_gr16  34 r5
        test_h_gr16  12 r6
        test_h_gr16  12 r6
        mov     #_stack_top, r0
        mov     #_stack_top, r0
        cmp.w   r0, r7
        cmp.w   r0, r7
        bne     fail1
        bne     fail1
.else
.else
        mov     #_stack_top, er7
        mov     #_stack_top, er7
        mov     #12, er1
        mov     #12, er1
        mov     #34, er2
        mov     #34, er2
        mov     #56, er3
        mov     #56, er3
        push    er1
        push    er1
        push    er2
        push    er2
        push    er3
        push    er3
        pop     er4
        pop     er4
        pop     er5
        pop     er5
        pop     er6
        pop     er6
 
 
        test_gr_a5a5 0           ; Make sure other general _reg_ not disturbed
        test_gr_a5a5 0           ; Make sure other general _reg_ not disturbed
        test_h_gr32  12 er1
        test_h_gr32  12 er1
        test_h_gr32  34 er2
        test_h_gr32  34 er2
        test_h_gr32  56 er3
        test_h_gr32  56 er3
        test_h_gr32  56 er4
        test_h_gr32  56 er4
        test_h_gr32  34 er5
        test_h_gr32  34 er5
        test_h_gr32  12 er6
        test_h_gr32  12 er6
        test_h_gr32  _stack_top, er7
        test_h_gr32  _stack_top, er7
.endif
.endif
 
 
        pass
        pass
 
 
        exit 0
        exit 0
 
 
fail1:  fail
fail1:  fail
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.