* Test case for modular arithmetic hardware erratum, c.f. PR 14887.
authorFrank Ch. Eigler <fche@redhat.com>
Wed, 29 Apr 1998 17:01:23 +0000 (17:01 +0000)
committerFrank Ch. Eigler <fche@redhat.com>
Wed, 29 Apr 1998 17:01:23 +0000 (17:01 +0000)
Wed Apr 29 12:49:00 1998  Frank Ch. Eigler  <fche@cygnus.com>

* ls-modaddr.S: New test for modular addressing.
* Makefile.in: Run it.

sim/testsuite/d30v-elf/.Sanitize
sim/testsuite/d30v-elf/ls-modaddr.S [new file with mode: 0644]

index e9325bd226a574fd4b6129ee02ab716a62b8982c..fd1fd13b802ab1b56ef7339ecea4e5a5c7874517 100644 (file)
@@ -53,6 +53,7 @@ ls-ldhu.S
 ls-ldw.S
 ls-moddec.S
 ls-modinc.S
+ls-modaddr.S
 ls-st2h.S
 ls-st2w.S
 ls-st4hb.S
diff --git a/sim/testsuite/d30v-elf/ls-modaddr.S b/sim/testsuite/d30v-elf/ls-modaddr.S
new file mode 100644 (file)
index 0000000..55634e9
--- /dev/null
@@ -0,0 +1,37 @@
+       ; Modular address postincrement test
+       
+start: 
+       ; set modular address limits: 0x18 bytes
+       add  r1,r0,0x20000070    ; [start, ...
+       nop || nop
+       mvtsys mod_s,r1 || nop
+       nop || nop
+       add  r1,r0,0x20000088    ; ..., end)
+       nop || nop
+       mvtsys mod_e,r1 || nop
+
+       ;  program PSW for modular address mode
+       add  r1,r0,0x81000000
+       nop || nop
+       mvtsys psw,r1 || nop
+       nop || nop
+
+       ; modular autoincrement test
+       add     r30,r0,0x20000070 ; base address = mod_s
+       ld2w    r40,@(r30+,r0) || nop ; after:     r30 = ...078
+       ld2w    r40,@(r30+,r0) || nop ; after:  r30 = ...080
+       ld2w    r40,@(r30+,r0) || nop ; after:  r30 = ...070
+       
+       add     r29,r0,0x20000070 ; expected end address; wrapping around
+       cmpeq   f1,r30,r29
+       bra/xf  fail
+
+       ; Q: what about autodecrement?
+       
+ok:    
+       add     r2,r0,0 
+       .long   0x0e000004, 0x00f00000
+               
+fail:  
+       add     r2,r0,47        
+       .long   0x0e000004, 0x00f00000