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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [sim/] [testsuite/] [sim/] [frv/] [interrupts/] [mp_exception.cgs] - Rev 816

Go to most recent revision | Compare with Previous | Blame | View Log

# frv testcase for mp_exception
# mach: fr500 fr550 frv
# xerror:

# This program no longer assembles because the assembler
# now detects the unaligned registers. For this reason
# this test is now marked as "xerror" and prints the
# expected message "fail"

        .include "testutils.inc"

        start

        .global mp_exception
mpx:
.if 1
        fail
.else
        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mcmpsh          fr10,fr11,fcc1  ; mp_exception: cr-not-aligned
        test_spr_bits   0x7000,12,3,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf is set

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mcmpsh.p        fr10,fr11,fcc0  ; no exception
        mcmpsh          fr10,fr11,fcc2  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        mmulhs.p        fr10,fr11,acc3  ; no exception
        mmulhs          fr10,fr11,acc1  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mmulhu          fr10,fr11,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mmulxhs.p       fr10,fr11,acc3  ; no exception
        mmulxhs         fr10,fr11,acc1  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mmulxhu         fr10,fr11,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mmachs.p        fr10,fr11,acc3  ; no exception
        mmachs          fr10,fr11,acc1  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mmachu          fr10,fr11,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqaddhss.p      fr10,fr12,fr17  ; mp_exception: register-not-aligned
        mqaddhss        fr10,fr12,fr14  ; no exception
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqaddhss.p      fr10,fr12,fr14  ; no exception
        mqaddhss        fr10,fr13,fr16  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqaddhss.p      fr19,fr12,fr14  ; mp_exception: register-not-aligned
        mqaddhss        fr10,fr13,fr16  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqaddhss        fr10,fr12,fr14  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqmulhs.p       fr10,fr11,acc3  ; no exception
        mqmulhs         fr10,fr11,acc2  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmulhu         fr10,fr11,acc0  ; mp_exception: register_not_aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmulhu         fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqmulxhs.p      fr10,fr11,acc3  ; no exception
        mqmulxhs        fr10,fr11,acc2  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmulxhu        fr10,fr11,acc0  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmulxhu        fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,1,msr0 ; msr0.ovf is still set
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqmachs.p       fr10,fr12,acc3  ; no exception
        mqmachs         fr10,fr12,acc2  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmachu.p       fr19,fr12,acc0  ; mp_exception: register-not-aligned
        mqmachu         fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmachu.p       fr10,fr12,acc0  ; no exception
        mqmachu         fr19,fr12,acc0  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmachu.p       fr19,fr12,acc0  ; mp_exception: register-not-aligned
        mqmachu         fr19,fr12,acc0  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqmachu         fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        set_spr_immed   0,msr0
        set_spr_immed   0,msr1
        mqcpxrs.p       fr10,fr12,acc0  ; no exception
        mqcpxrs         fr10,fr12,acc1  ; mp_exception: acc-not-aligned
        test_spr_bits   0x7000,12,2,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqcpxru.p       fr19,fr12,acc0  ; mp_exception: register-not-aligned
        mqcpxru         fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqcpxru.p       fr10,fr12,acc0  ; no exception
        mqcpxru         fr19,fr12,acc0  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqcpxru.p       fr19,fr12,acc0  ; mp_exception: register-not-aligned
        mqcpxru         fr19,fr12,acc0  ; mp_exception: register-not-aligned
        test_spr_bits   0x7000,12,6,msr0; msr0.mtt is set
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,0,msr1 ; msr1.ovf is clear

        or_spr_immed    2,msr0          ; Set msr0.ovf
        or_spr_immed    2,msr1          ; Set msr1.ovf
        and_spr_immed   0xffff8fff,msr0 ; Clear msr0.mtt
        mqcpxru         fr10,fr12,acc0  ; no exception
        test_spr_bits   0x7000,12,0,msr0; msr0.mtt is clear
        test_spr_bits   0x003c,2,0,msr0 ; msr0.sie is clear
        test_spr_bits   0x0002,1,0,msr0 ; msr0.ovf is clear
        test_spr_bits   0x003c,2,0,msr1 ; msr1.sie is clear
        test_spr_bits   0x0002,1,1,msr1 ; msr1.ovf still set

        pass
.endif

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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