From: ceriel Date: Fri, 6 Sep 1991 16:01:22 +0000 (+0000) Subject: Added X-Git-Tag: release-5-5~914 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=ad1ff9d44cde43e1f209b176f9f66d2f32e3ef45;p=ack.git Added --- diff --git a/mach/arm/cv/dl.c b/mach/arm/cv/dl.c new file mode 100644 index 000000000..fb17ef97d --- /dev/null +++ b/mach/arm/cv/dl.c @@ -0,0 +1,122 @@ +static char rcsid[] = "$Header$"; +#define MAXBYTE 24 +#include +#include +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 index 000000000..5937e497d --- /dev/null +++ b/mach/i86/as/testfp.s @@ -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 index 000000000..199532676 --- /dev/null +++ b/mach/m68020/as/testfp.s @@ -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 index 000000000..bd5031370 --- /dev/null +++ b/mach/m68k2/as/testfp.s @@ -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