OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gdb-6.8/] [pre-binutils-2.20.1-sync/] [sim/] [testsuite/] [sim/] [h8300/] [stc.s] - Diff between revs 24 and 157

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 157
# Hitachi H8 testcase 'stc'
# Hitachi H8 testcase 'stc'
# 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
byte_dest1:
byte_dest1:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest2:
byte_dest2:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest3:
byte_dest3:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest4:
byte_dest4:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest5:
byte_dest5:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest6:
byte_dest6:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest7:
byte_dest7:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest8:
byte_dest8:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest9:
byte_dest9:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest10:
byte_dest10:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest11:
byte_dest11:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
byte_dest12:
byte_dest12:
        .byte   0
        .byte   0
        .byte   0
        .byte   0
 
 
        start
        start
 
 
stc_ccr_reg8:
stc_ccr_reg8:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0xff, ccr      ; test value
        ldc     #0xff, ccr      ; test value
        stc     ccr, r0h        ; copy test value to r0h
        stc     ccr, r0h        ; copy test value to r0h
 
 
        test_h_gr16  0xffa5 r0  ; ff in r0h, a5 in r0l
        test_h_gr16  0xffa5 r0  ; ff in r0h, a5 in r0l
.if (sim_cpu)                   ; h/s/sx
.if (sim_cpu)                   ; h/s/sx
        test_h_gr32  0xa5a5ffa5 er0     ; ff in r0h, a5 everywhere else
        test_h_gr32  0xa5a5ffa5 er0     ; ff in r0h, a5 everywhere else
.endif
.endif
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
        test_gr_a5a5 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
.if (sim_cpu == h8300s || sim_cpu == h8sx)      ; Earlier versions, no exr
.if (sim_cpu == h8300s || sim_cpu == h8sx)      ; Earlier versions, no exr
stc_exr_reg8:
stc_exr_reg8:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0x87, exr      ; set exr to 0x87
        ldc     #0x87, exr      ; set exr to 0x87
        stc     exr, r0l        ; retrieve and check exr value
        stc     exr, r0l        ; retrieve and check exr value
        cmp.b   #0x87, r0l
        cmp.b   #0x87, r0l
        beq     .L21
        beq     .L21
        fail
        fail
.L21:
.L21:
        test_h_gr32  0xa5a5a587 er0     ; Register 0 modified by test procedure.
        test_h_gr32  0xa5a5a587 er0     ; Register 0 modified by test procedure.
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
        test_gr_a5a5 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_abs16:
stc_ccr_abs16:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @byte_dest1:16     ; abs16 dest
        stc     ccr, @byte_dest1:16     ; abs16 dest
 
 
        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_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_abs16:
stc_exr_abs16:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @byte_dest2:16     ; abs16 dest
        stc     exr, @byte_dest2:16     ; abs16 dest
 
 
        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_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_abs32:
stc_ccr_abs32:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @byte_dest3:32     ; abs32 dest
        stc     ccr, @byte_dest3:32     ; abs32 dest
 
 
        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_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_abs32:
stc_exr_abs32:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @byte_dest4:32     ; abs32 dest
        stc     exr, @byte_dest4:32     ; abs32 dest
 
 
        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_gr_a5a5 4
        test_gr_a5a5 4
        test_gr_a5a5 5
        test_gr_a5a5 5
        test_gr_a5a5 6
        test_gr_a5a5 6
        test_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_disp16:
stc_ccr_disp16:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest5-1, er1
        mov     #byte_dest5-1, er1
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @(1:16,er1)        ; disp16 dest (5)
        stc     ccr, @(1:16,er1)        ; disp16 dest (5)
 
 
        test_h_gr32 byte_dest5-1, er1   ; er1 still contains address
        test_h_gr32 byte_dest5-1, er1   ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_disp16:
stc_exr_disp16:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest6+1, er1
        mov     #byte_dest6+1, er1
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @(-1:16,er1)       ; disp16 dest (6)
        stc     exr, @(-1:16,er1)       ; disp16 dest (6)
 
 
        test_h_gr32 byte_dest6+1, er1   ; er1 still contains address
        test_h_gr32 byte_dest6+1, er1   ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_disp32:
stc_ccr_disp32:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest7-1, er1
        mov     #byte_dest7-1, er1
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @(1:32,er1)        ; disp32 dest (7)
        stc     ccr, @(1:32,er1)        ; disp32 dest (7)
 
 
        test_h_gr32 byte_dest7-1, er1   ; er1 still contains address
        test_h_gr32 byte_dest7-1, er1   ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_disp32:
stc_exr_disp32:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest8+1, er1
        mov     #byte_dest8+1, er1
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @(-1:32,er1)       ; disp16 dest (8)
        stc     exr, @(-1:32,er1)       ; disp16 dest (8)
 
 
        test_h_gr32 byte_dest8+1, er1   ; er1 still contains address
        test_h_gr32 byte_dest8+1, er1   ; er1 still contains address
 
 
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_predecr:
stc_ccr_predecr:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest9+2, er1
        mov     #byte_dest9+2, er1
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @-er1      ; predecr dest (9)
        stc     ccr, @-er1      ; predecr dest (9)
 
 
        test_h_gr32  byte_dest9 er1     ; er1 still contains address
        test_h_gr32  byte_dest9 er1     ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_predecr:
stc_exr_predecr:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest10+2, er1
        mov     #byte_dest10+2, er1
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @-er1      ; predecr dest (10)
        stc     exr, @-er1      ; predecr dest (10)
 
 
        test_h_gr32 byte_dest10, er1    ; er1 still contains address
        test_h_gr32 byte_dest10, er1    ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_ccr_ind:
stc_ccr_ind:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest11, er1
        mov     #byte_dest11, er1
        ldc     #0xff, ccr
        ldc     #0xff, ccr
        stc     ccr, @er1       ; postinc dest (11)
        stc     ccr, @er1       ; postinc dest (11)
 
 
        test_h_gr32 byte_dest11, er1    ; er1 still contains address
        test_h_gr32 byte_dest11, er1    ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_exr_ind:
stc_exr_ind:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #byte_dest12, er1
        mov     #byte_dest12, er1
        ldc     #0x87, exr
        ldc     #0x87, exr
        stc     exr, @er1, exr  ; postinc dest (12)
        stc     exr, @er1, exr  ; postinc dest (12)
 
 
        test_h_gr32 byte_dest12, er1    ; er1 still contains address
        test_h_gr32 byte_dest12, er1    ; er1 still contains address
 
 
        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 2
        test_gr_a5a5 2
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
.endif
.endif
 
 
.if (sim_cpu == h8sx)           ; New vbr and sbr registers for h8sx
.if (sim_cpu == h8sx)           ; New vbr and sbr registers for h8sx
stc_sbr_reg:
stc_sbr_reg:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #0xaaaaaaaa, er0
        mov     #0xaaaaaaaa, er0
        ldc     er0, sbr        ; set sbr to 0xaaaaaaaa
        ldc     er0, sbr        ; set sbr to 0xaaaaaaaa
        stc     sbr, er1        ; retreive and check sbr value
        stc     sbr, er1        ; retreive and check sbr value
 
 
        test_h_gr32 0xaaaaaaaa er1
        test_h_gr32 0xaaaaaaaa er1
        test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
        test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
stc_vbr_reg:
stc_vbr_reg:
        set_grs_a5a5
        set_grs_a5a5
        set_ccr_zero
        set_ccr_zero
 
 
        mov     #0xaaaaaaaa, er0
        mov     #0xaaaaaaaa, er0
        ldc     er0, vbr        ; set sbr to 0xaaaaaaaa
        ldc     er0, vbr        ; set sbr to 0xaaaaaaaa
        stc     vbr, er1        ; retreive and check sbr value
        stc     vbr, er1        ; retreive and check sbr value
 
 
        test_h_gr32 0xaaaaaaaa er1
        test_h_gr32 0xaaaaaaaa er1
        test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
        test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 2          ; Make sure other general regs not disturbed
        test_gr_a5a5 3
        test_gr_a5a5 3
        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_gr_a5a5 7
        test_gr_a5a5 7
 
 
check_results:
check_results:
        ;; Now check results
        ;; Now check results
        mov @byte_dest1, r0h
        mov @byte_dest1, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L1
        beq .L1
        fail
        fail
 
 
.L1:    mov @byte_dest2, r0h
.L1:    mov @byte_dest2, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L2
        beq .L2
        fail
        fail
 
 
.L2:    mov @byte_dest3, r0h
.L2:    mov @byte_dest3, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L3
        beq .L3
        fail
        fail
 
 
.L3:    mov @byte_dest4, r0h
.L3:    mov @byte_dest4, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L4
        beq .L4
        fail
        fail
 
 
.L4:    mov @byte_dest5, r0h
.L4:    mov @byte_dest5, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L5
        beq .L5
        fail
        fail
 
 
.L5:    mov @byte_dest6, r0h
.L5:    mov @byte_dest6, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L6
        beq .L6
        fail
        fail
 
 
.L6:    mov @byte_dest7, r0h
.L6:    mov @byte_dest7, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L7
        beq .L7
        fail
        fail
 
 
.L7:    mov @byte_dest8, r0h
.L7:    mov @byte_dest8, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L8
        beq .L8
        fail
        fail
 
 
.L8:    mov @byte_dest9, r0h
.L8:    mov @byte_dest9, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L9
        beq .L9
        fail
        fail
 
 
.L9:    mov @byte_dest10, r0h
.L9:    mov @byte_dest10, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L10
        beq .L10
        fail
        fail
 
 
.L10:   mov @byte_dest11, r0h
.L10:   mov @byte_dest11, r0h
        cmp.b   #0xff, r0h
        cmp.b   #0xff, r0h
        beq .L11
        beq .L11
        fail
        fail
 
 
.L11:   mov @byte_dest12, r0h
.L11:   mov @byte_dest12, r0h
        cmp.b   #0x87, r0h
        cmp.b   #0x87, r0h
        beq .L12
        beq .L12
        fail
        fail
 
 
.L12:
.L12:
.endif
.endif
        pass
        pass
 
 
        exit 0
        exit 0
 
 

powered by: WebSVN 2.1.0

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