# 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