Added
authorceriel <none@none>
Fri, 6 Sep 1991 16:01:22 +0000 (16:01 +0000)
committerceriel <none@none>
Fri, 6 Sep 1991 16:01:22 +0000 (16:01 +0000)
mach/arm/cv/dl.c [new file with mode: 0644]
mach/i86/as/testfp.s [new file with mode: 0644]
mach/m68020/as/testfp.s [new file with mode: 0644]
mach/m68k2/as/testfp.s [new file with mode: 0644]

diff --git a/mach/arm/cv/dl.c b/mach/arm/cv/dl.c
new file mode 100644 (file)
index 0000000..fb17ef9
--- /dev/null
@@ -0,0 +1,122 @@
+static char rcsid[] = "$Header$";
+#define MAXBYTE        24
+#include <stdio.h>
+#include <out.h>
+char hex[] =  "0123456789ABCDEF";
+FILE *fp, *fopen();
+char **s;
+int bytes, bytcnt, checksum;
+long pc;
+struct outhead ohead;
+struct outsect sect[MAXSECT];
+
+
+main (argc,argv)
+int argc;
+char *argv[];
+       {
+       if (argc != 2)   fatal ("usage: %s filename\n",argv[0]);
+       if (! rd_open (*++argv))
+               fatal ("can't open %s\n",*argv);
+       else    {
+               s = argv;
+               convert ();
+               }
+       }
+
+convert ()
+       {
+       int i;
+
+       rd_ohead(&ohead);
+       if (ohead.oh_flags & HF_LINK) {
+               fatal("%s contains unresolved references\n",s);
+       }
+       rd_sect(sect, ohead.oh_nsect);
+       for (i = 0; i < ohead.oh_nsect; i++) {
+               rd_outsect(i);
+               pc = sect[i].os_base;
+               while (sect[i].os_size) {
+                       unsigned int sz = 8096, fl;
+                       extern char *calloc();
+                       register char *buf;
+                       char *pbuf;
+
+                       if (sz > sect[i].os_size) sz = sect[i].os_size;
+                       sect[i].os_size -= sz;
+                       pbuf = buf = calloc(sz, 1);
+                       if (fl = sect[i].os_flen) {
+                               if (fl > sz) fl = sz;
+                               sect[i].os_flen -= fl;
+
+                               rd_emit(buf, (long) fl);
+                       }
+                       while (sz > 0) {
+                               int p = bytcnt = sz < MAXBYTE ? sz : MAXBYTE;
+                               checksum = 0;
+                               sz -= p;
+                               if (pc > 0xffffL) 
+                                       S2record (buf);
+                               else S1record (buf);
+                               buf += p;
+                       }
+                       free(pbuf);
+               }
+       }
+       printf ("S9030000FC\n");
+       }
+
+
+S2record (buf)
+       char *buf;
+       {
+       printf ("S2");
+       bytcnt += 4;
+       outbyte (bytcnt);
+       outbyte ((int) (pc >> 16));
+       outbyte ((int) (pc >> 8));
+       outbyte ((int) pc);
+       record ();
+       }
+
+S1record (buf)
+       char *buf;
+       {
+       printf ("S1");
+       bytcnt += 3;
+       outbyte (bytcnt);
+       outbyte ((int) (pc >> 8));
+       outbyte((int) pc);
+       record (buf);
+       }
+
+record (buf)
+       register char *buf;
+       {
+       while (bytcnt != 0) 
+               {
+               outbyte (*buf++);
+               pc ++;
+               }
+       outbyte (~checksum);
+       putchar ('\n');
+       putchar (0);
+       putchar (0);
+       }
+
+outbyte (b)
+int b;
+       {
+       checksum = (checksum + b) & 0377;
+       putchar (hex[(b>>4) & 017]);
+       putchar  (hex[b & 017]);
+       -- bytcnt;
+       }
+
+rd_fatal() { fatal("Read error\n"); }
+
+fatal (s,a)
+       {
+       printf (s,a);
+       exit (-1);
+       }
diff --git a/mach/i86/as/testfp.s b/mach/i86/as/testfp.s
new file mode 100644 (file)
index 0000000..5937e49
--- /dev/null
@@ -0,0 +1,189 @@
+.sect .text; .sect .rom; .sect .data;
+.sect .data
+.define _m_a_i_n
+blablabla:
+       .space 100
+
+.sect .text
+
+_m_a_i_n:
+       ! no operands
+       f2xm1
+       fabs
+       fchs
+       fclex
+       fcompp
+       fdecstp
+       fdisi
+       feni
+       fincstp
+       finit
+       fld1
+       fldl2e
+       fldl2t
+       fldlg2
+       fldln2
+       fldpi
+       fldz
+       fnop
+       fpatan
+       fprem
+       fptan
+       frndint
+       fscale
+       fsqrt
+       ftst
+       fxam
+       fxtract
+       fyl2x
+       fyl2pi
+
+       ! memory operand
+       fiadds  (blablabla)
+       fiaddl  (blablabla)
+       fadds   (blablabla)
+       faddd   (blablabla)
+       fbld    (blablabla)
+       fbstp   (blablabla)
+       ficoms  (blablabla)
+       ficoml  (blablabla)
+       fcoms   (blablabla)
+       fcomd   (blablabla)
+       ficomps (blablabla)
+       ficompl (blablabla)
+       fcomps  (blablabla)
+       fcompd  (blablabla)
+       fidivs  (blablabla)
+       fidivl  (blablabla)
+       fdivs   (blablabla)
+       fdivd   (blablabla)
+       fidivrs (blablabla)
+       fidivrl (blablabla)
+       fdivrs  (blablabla)
+       fdivrd  (blablabla)
+       filds   (blablabla)
+       fildl   (blablabla)
+       flds    (blablabla)
+       fldd    (blablabla)
+       fldx    (blablabla)
+       fldcw   (blablabla)
+       fldenv  (blablabla)
+       fimuls  (blablabla)
+       fimull  (blablabla)
+       fmuls   (blablabla)
+       fmuld   (blablabla)
+       frstor  (blablabla)
+       fsave   (blablabla)
+       fists   (blablabla)
+       fistl   (blablabla)
+       fsts    (blablabla)
+       fstd    (blablabla)
+       fistps  (blablabla)
+       fistpl  (blablabla)
+       fstps   (blablabla)
+       fstpd   (blablabla)
+       fstpx   (blablabla)
+       fstcw   (blablabla)
+       fstenv  (blablabla)
+       fstsw   (blablabla)
+       fisubs  (blablabla)
+       fisubl  (blablabla)
+       fsubs   (blablabla)
+       fsubd   (blablabla)
+       fisubrs (blablabla)
+       fisubrl (blablabla)
+       fsubrs  (blablabla)
+       fsubrd  (blablabla)
+
+       ! again, memory operand
+       fiadds  8(bp)
+       fiaddl  8(bp)
+       fadds   8(bp)
+       faddd   8(bp)
+       fbld    8(bp)
+       fbstp   8(bp)
+       ficoms  8(bp)
+       ficoml  8(bp)
+       fcoms   8(bp)
+       fcomd   8(bp)
+       ficomps 8(bp)
+       ficompl 8(bp)
+       fcomps  8(bp)
+       fcompd  8(bp)
+       fidivs  8(bp)
+       fidivl  8(bp)
+       fdivs   8(bp)
+       fdivd   8(bp)
+       fidivrs 8(bp)
+       fidivrl 8(bp)
+       fdivrs  8(bp)
+       fdivrd  8(bp)
+       filds   8(bp)
+       fildl   8(bp)
+       flds    8(bp)
+       fldd    8(bp)
+       fldx    8(bp)
+       fldcw   8(bp)
+       fldenv  8(bp)
+       fimuls  8(bp)
+       fimull  8(bp)
+       fmuls   8(bp)
+       fmuld   8(bp)
+       frstor  8(bp)
+       fsave   8(bp)
+       fists   8(bp)
+       fistl   8(bp)
+       fsts    8(bp)
+       fstd    8(bp)
+       fistps  8(bp)
+       fistpl  8(bp)
+       fstps   8(bp)
+       fstpd   8(bp)
+       fstpx   8(bp)
+       fstcw   8(bp)
+       fstenv  8(bp)
+       fstsw   8(bp)
+       fisubs  8(bp)
+       fisubl  8(bp)
+       fsubs   8(bp)
+       fsubd   8(bp)
+       fisubrs 8(bp)
+       fisubrl 8(bp)
+       fsubrs  8(bp)
+       fsubrd  8(bp)
+
+       ! one FP stack argument
+       fld     st
+       fst     st
+       fstp    st
+       fxch    st
+       fcom    st
+       fcomp   st
+       ffree   st
+
+       fld     st(4)
+       fst     st(4)
+       fstp    st(4)
+       fxch    st(4)
+       fcom    st(4)
+       fcomp   st(4)
+       ffree   st(4)
+
+       ! two FP stack arguments
+       fadd    st(4),st
+       faddp   st(4),st
+       fdiv    st(4),st
+       fdivp   st(4),st
+       fdivr   st(4),st
+       fdivrp  st(4),st
+       fmul    st(4),st
+       fmulp   st(4),st
+       fsub    st(4),st
+       fsubp   st(4),st
+       fsubr   st(4),st
+       fsubrp  st(4),st
+
+       fadd    st,st(4)
+       faddp   st,st(4)
+       fmul    st,st(4)
+       fmulp   st,st(4)
diff --git a/mach/m68020/as/testfp.s b/mach/m68020/as/testfp.s
new file mode 100644 (file)
index 0000000..1995326
--- /dev/null
@@ -0,0 +1,213 @@
+.sect .text ; .sect .rom ; .sect .data ; .sect .bss ; .sect .text
+
+! test for Motorola MC68881 floating point processor instructions
+! compare result of disassembled output with source.
+
+blablabla:
+! dyadic instructions
+       fadd.l  (12,a6),fp0
+       fadd    fp0,fp1
+
+       fcmp.l  (12,a6),fp0
+       fcmp    fp0,fp1
+
+       fdiv.l  (12,a6),fp0
+       fdiv    fp0,fp1
+
+       fmod.l  (12,a6),fp0
+       fmod    fp0,fp1
+
+       fmul.l  (12,a6),fp0
+       fmul    fp0,fp1
+
+       frem.l  (12,a6),fp0
+       frem    fp0,fp1
+
+       fscale.l        (12,a6),fp0
+       fscale  fp0,fp1
+
+       fsgldiv.l       (12,a6),fp0
+       fsgldiv fp0,fp1
+
+       fsglmul.l       (12,a6),fp0
+       fsglmul fp0,fp1
+
+       fsub.l  (12,a6),fp0
+       fsub    fp0,fp1
+
+!monadic instructions
+       fabs.p  (12,a6),fp1
+       fabs.x  fp1,fp2
+       fabs    fp1
+
+       facos.p (12,a6),fp1
+       facos.x fp1,fp2
+       facos   fp1
+
+       fasin.p (12,a6),fp1
+       fasin.x fp1,fp2
+       fasin   fp1
+
+       fatan.p (12,a6),fp1
+       fatan.x fp1,fp2
+       fatan   fp1
+
+       fatanh.p        (12,a6),fp1
+       fatanh.x        fp1,fp2
+       fatanh  fp1
+
+       fcos.p  (12,a6),fp1
+       fcos.x  fp1,fp2
+       fcos    fp1
+
+       fcosh.p (12,a6),fp1
+       fcosh.x fp1,fp2
+       fcosh   fp1
+
+       fetox.p (12,a6),fp1
+       fetox.x fp1,fp2
+       fetox   fp1
+
+       fetoxm1.p       (12,a6),fp1
+       fetoxm1.x       fp1,fp2
+       fetoxm1 fp1
+
+       fgetexp.p       (12,a6),fp1
+       fgetexp.x       fp1,fp2
+       fgetexp fp1
+
+       fgetman.p       (12,a6),fp1
+       fgetman.x       fp1,fp2
+       fgetman fp1
+
+       fint.p  (12,a6),fp1
+       fint.x  fp1,fp2
+       fint    fp1
+
+       fintrz.p        (12,a6),fp1
+       fintrz.x        fp1,fp2
+       fintrz  fp1
+
+       flogn.p (12,a6),fp1
+       flogn.x fp1,fp2
+       flogn   fp1
+
+       flognp1.p       (12,a6),fp1
+       flognp1.x       fp1,fp2
+       flognp1 fp1
+
+       flog10.p        (12,a6),fp1
+       flog10.x        fp1,fp2
+       flog10  fp1
+
+       flog2.p (12,a6),fp1
+       flog2.x fp1,fp2
+       flog2   fp1
+
+       fneg.p  (12,a6),fp1
+       fneg.x  fp1,fp2
+       fneg    fp1
+
+       fsin.p  (12,a6),fp1
+       fsin.x  fp1,fp2
+       fsin    fp1
+
+       fsinh.p (12,a6),fp1
+       fsinh.x fp1,fp2
+       fsinh   fp1
+
+       fsqrt.p (12,a6),fp1
+       fsqrt.x fp1,fp2
+       fsqrt   fp1
+
+       ftan.p  (12,a6),fp1
+       ftan.x  fp1,fp2
+       ftan    fp1
+
+       ftanh.p (12,a6),fp1
+       ftanh.x fp1,fp2
+       ftanh   fp1
+
+       ftentox.p       (12,a6),fp1
+       ftentox.x       fp1,fp2
+       ftentox fp1
+
+       ftwotox.p       (12,a6),fp1
+       ftwotox.x       fp1,fp2
+       ftwotox fp1
+
+!sincos
+       fsincos.s       (12,a6),fp0:fp1
+       fsincos.x       fp2,fp0:fp1
+
+!some moves
+       fmove.l (12,a6),fp0
+       fmove.l fp1,(12,a6)
+       fmove.p fp0,(12,a6){d0}
+       fmove.p fp0,(12,a6){#4}
+       fmove.l (12,a6),fpcr
+       !fmove.l        a0,fpcr                 ! error
+       fmove.l a0,fpiar
+       fmovecr #1,fp1
+       !fmovem.x d1,(a0)+              ! error
+       fmovem.x d1,-(a0)
+       fmovem.x fp0-fp3/fp5,-(a0)
+       !fmovem.x -(a0),fp0-fp3/fp5     ! error
+       fmovem.x (a0)+,fp0-fp3/fp5
+
+!some branches
+       fbeq    blablabla
+       fbne    blablabla
+       fbgt    blablabla
+       fbngt   blablabla
+       fbge    blablabla
+       fbnge   blablabla
+       fblt    blablabla
+       fbnlt   blablabla
+       fble    blablabla
+       fbnle   blablabla
+       fbgl    blablabla
+       fbngl   blablabla
+       fbgle   blablabla
+       fbngle  blablabla
+       fbogt   blablabla
+       fbule   blablabla
+       fboge   blablabla
+       fbult   blablabla
+       fbolt   blablabla
+       fbuge   blablabla
+       fbole   blablabla
+       fbugt   blablabla
+       fbogl   blablabla
+       fbueq   blablabla
+       fbor    blablabla
+       fbun    blablabla
+       fbf     blablabla
+       fbt     blablabla
+       fbsf    blablabla
+       fbst    blablabla
+       fbseq   blablabla
+       fbsne   blablabla
+
+       fdbgl   d4,blablabla
+
+!nop
+       fnop
+
+!fscc
+       fsult   d4
+
+!ftst
+       ftst.p  (12,a6)
+       ftst    fp0
+
+!save/restore
+       fsave   (12,a6)
+       ! fsave (a5)+           ! error
+       frestore        (12,a6)
+       ! frestore      -(a5)   ! error
+
+!trap
+       ftrapeq
+       ftrapeq.l #4
+       ftrapeq.w #4
diff --git a/mach/m68k2/as/testfp.s b/mach/m68k2/as/testfp.s
new file mode 100644 (file)
index 0000000..bd50313
--- /dev/null
@@ -0,0 +1,215 @@
+.sect .text ; .sect .rom ; .sect .data ; .sect .bss ; .sect .text
+
+! test for Motorola MC68881 floating point processor instructions
+! compare result of disassembled output with source.
+
+.define _m_a_i_n
+_m_a_i_n:
+blablabla:
+! dyadic instructions
+       fadd.l  12(a6),fp0
+       fadd    fp0,fp1
+
+       fcmp.l  12(a6),fp0
+       fcmp    fp0,fp1
+
+       fdiv.l  12(a6),fp0
+       fdiv    fp0,fp1
+
+       fmod.l  12(a6),fp0
+       fmod    fp0,fp1
+
+       fmul.l  12(a6),fp0
+       fmul    fp0,fp1
+
+       frem.l  12(a6),fp0
+       frem    fp0,fp1
+
+       fscale.l        12(a6),fp0
+       fscale  fp0,fp1
+
+       fsgldiv.l       12(a6),fp0
+       fsgldiv fp0,fp1
+
+       fsglmul.l       12(a6),fp0
+       fsglmul fp0,fp1
+
+       fsub.l  12(a6),fp0
+       fsub    fp0,fp1
+
+!monadic instructions
+       fabs.p  12(a6),fp1
+       fabs.x  fp1,fp2
+       fabs    fp1
+
+       facos.p 12(a6),fp1
+       facos.x fp1,fp2
+       facos   fp1
+
+       fasin.p 12(a6),fp1
+       fasin.x fp1,fp2
+       fasin   fp1
+
+       fatan.p 12(a6),fp1
+       fatan.x fp1,fp2
+       fatan   fp1
+
+       fatanh.p        12(a6),fp1
+       fatanh.x        fp1,fp2
+       fatanh  fp1
+
+       fcos.p  12(a6),fp1
+       fcos.x  fp1,fp2
+       fcos    fp1
+
+       fcosh.p 12(a6),fp1
+       fcosh.x fp1,fp2
+       fcosh   fp1
+
+       fetox.p 12(a6),fp1
+       fetox.x fp1,fp2
+       fetox   fp1
+
+       fetoxm1.p       12(a6),fp1
+       fetoxm1.x       fp1,fp2
+       fetoxm1 fp1
+
+       fgetexp.p       12(a6),fp1
+       fgetexp.x       fp1,fp2
+       fgetexp fp1
+
+       fgetman.p       12(a6),fp1
+       fgetman.x       fp1,fp2
+       fgetman fp1
+
+       fint.p  12(a6),fp1
+       fint.x  fp1,fp2
+       fint    fp1
+
+       fintrz.p        12(a6),fp1
+       fintrz.x        fp1,fp2
+       fintrz  fp1
+
+       flogn.p 12(a6),fp1
+       flogn.x fp1,fp2
+       flogn   fp1
+
+       flognp1.p       12(a6),fp1
+       flognp1.x       fp1,fp2
+       flognp1 fp1
+
+       flog10.p        12(a6),fp1
+       flog10.x        fp1,fp2
+       flog10  fp1
+
+       flog2.p 12(a6),fp1
+       flog2.x fp1,fp2
+       flog2   fp1
+
+       fneg.p  12(a6),fp1
+       fneg.x  fp1,fp2
+       fneg    fp1
+
+       fsin.p  12(a6),fp1
+       fsin.x  fp1,fp2
+       fsin    fp1
+
+       fsinh.p 12(a6),fp1
+       fsinh.x fp1,fp2
+       fsinh   fp1
+
+       fsqrt.p 12(a6),fp1
+       fsqrt.x fp1,fp2
+       fsqrt   fp1
+
+       ftan.p  12(a6),fp1
+       ftan.x  fp1,fp2
+       ftan    fp1
+
+       ftanh.p 12(a6),fp1
+       ftanh.x fp1,fp2
+       ftanh   fp1
+
+       ftentox.p       12(a6),fp1
+       ftentox.x       fp1,fp2
+       ftentox fp1
+
+       ftwotox.p       12(a6),fp1
+       ftwotox.x       fp1,fp2
+       ftwotox fp1
+
+!sincos
+       fsincos.s       12(a6),fp0:fp1
+       fsincos.x       fp2,fp0:fp1
+
+!some moves
+       fmove.l 12(a6),fp0
+       fmove.l fp1,12(a6)
+       fmove.p fp0,12(a6){d0}
+       fmove.p fp0,12(a6){#4}
+       fmove.l 12(a6),fpcr
+       !fmove.l        a0,fpcr                 ! error
+       fmove.l a0,fpiar
+       fmovecr #1,fp1
+       !fmovem.x d1,(a0)+              ! error
+       fmovem.x d1,-(a0)
+       fmovem.x fp0-fp3/fp5,-(a0)
+       !fmovem.x -(a0),fp0-fp3/fp5     ! error
+       fmovem.x (a0)+,fp0-fp3/fp5
+
+!some branches
+       fbeq    blablabla
+       fbne    blablabla
+       fbgt    blablabla
+       fbngt   blablabla
+       fbge    blablabla
+       fbnge   blablabla
+       fblt    blablabla
+       fbnlt   blablabla
+       fble    blablabla
+       fbnle   blablabla
+       fbgl    blablabla
+       fbngl   blablabla
+       fbgle   blablabla
+       fbngle  blablabla
+       fbogt   blablabla
+       fbule   blablabla
+       fboge   blablabla
+       fbult   blablabla
+       fbolt   blablabla
+       fbuge   blablabla
+       fbole   blablabla
+       fbugt   blablabla
+       fbogl   blablabla
+       fbueq   blablabla
+       fbor    blablabla
+       fbun    blablabla
+       fbf     blablabla
+       fbt     blablabla
+       fbsf    blablabla
+       fbst    blablabla
+       fbseq   blablabla
+       fbsne   blablabla
+
+       fdbgl   d4,blablabla
+
+!nop
+       fnop
+
+!fscc
+       fsult   d4
+
+!ftst
+       ftst.p  12(a6)
+       ftst    fp0
+
+!save/restore
+       fsave   12(a6)
+       ! fsave (a5)+           ! error
+       frestore        12(a6)
+       ! frestore      -(a5)   ! error
+
+!trap
+       ftrapeq
+       ftrapeq.l #4
+       ftrapeq.w #4