summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/frv/fr400/udiv.cgs
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2003-08-29 16:41:31 +0000
committerDave Brolley <brolley@redhat.com>2003-08-29 16:41:31 +0000
commit29f63e3a7cd1a6196021db84f330cfc5d4277f9f (patch)
tree1056bea2e5d045b9afb24a2e6b25081fea1b4fc7 /sim/testsuite/sim/frv/fr400/udiv.cgs
parent8ada8fd2eed30b6843d326fc6a3606f4e9c6d21f (diff)
downloadgdb-29f63e3a7cd1a6196021db84f330cfc5d4277f9f.tar.gz
New sim testsuite for Fujitsu FRV. Contributed by Red Hat.
Diffstat (limited to 'sim/testsuite/sim/frv/fr400/udiv.cgs')
-rw-r--r--sim/testsuite/sim/frv/fr400/udiv.cgs46
1 files changed, 46 insertions, 0 deletions
diff --git a/sim/testsuite/sim/frv/fr400/udiv.cgs b/sim/testsuite/sim/frv/fr400/udiv.cgs
new file mode 100644
index 00000000000..25ae7b3bf6b
--- /dev/null
+++ b/sim/testsuite/sim/frv/fr400/udiv.cgs
@@ -0,0 +1,46 @@
+# frv testcase for udiv $GRi,$GRj,$GRk
+# mach: all
+
+ .include "../testutils.inc"
+
+ start
+
+ .global udiv
+udiv:
+ ; simple division 12 / 3
+ set_gr_immed 0x00000003,gr2
+ set_gr_immed 0x0000000c,gr3
+ udiv gr3,gr2,gr3
+ test_gr_immed 0x00000003,gr2
+ test_gr_immed 0x00000004,gr3
+
+ ; example 1 from udiv in the fr30 manual
+ set_gr_limmed 0x0123,0x4567,gr2
+ set_gr_limmed 0xfedc,0xba98,gr3
+ udiv gr3,gr2,gr3
+ test_gr_limmed 0x0123,0x4567,gr2
+ test_gr_immed 0x000000e0,gr3
+
+ ; set up exception handler
+ set_psr_et 1
+ and_spr_immed -4081,tbr ; clear tbr.tt
+ set_gr_spr tbr,gr17
+ inc_gr_immed 0x170,gr17 ; address of exception handler
+ set_bctrlr_0_0 gr17
+ set_spr_immed 128,lcr
+ set_gr_immed 0,gr15
+
+ ; divide by zero
+ set_spr_addr ok1,lr
+e1: udiv gr1,gr0,gr2 ; divide by zero
+ test_gr_immed 1,gr15
+
+ pass
+
+ok1: ; exception handler for divide by zero
+ test_spr_bits 0x18,3,0x1,isr ; isr.dtt is set
+ test_spr_bits 0x0001,0,0x1,esr0 ; esr0 is valid
+ test_spr_bits 0x003e,1,0x13,esr0 ; esr0.ec is set
+ inc_gr_immed 1,gr15
+ rett 0
+ fail