123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include <mach.h>
- #include "arm.h"
- void unimp(ulong);
- void Ifcmp(ulong);
- void Ifdiv(ulong);
- void Ifmul(ulong);
- void Ifadd(ulong);
- void Ifsub(ulong);
- void Ifmov(ulong);
- void Icvtd(ulong);
- void Icvtw(ulong);
- void Icvts(ulong);
- void Ifabs(ulong);
- void Ifneg(ulong);
- Inst cop1[] = {
- { Ifadd, "add.f", Ifloat },
- { Ifsub, "sub.f", Ifloat },
- { Ifmul, "mul.f", Ifloat },
- { Ifdiv, "div.f", Ifloat },
- { unimp, "", },
- { Ifabs, "abs.f", Ifloat },
- { Ifmov, "mov.f", Ifloat },
- { Ifneg, "neg.f", Ifloat },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { Icvts, "cvt.s", Ifloat },
- { Icvtd, "cvt.d", Ifloat },
- { unimp, "", },
- { unimp, "", },
- { Icvtw, "cvt.w", Ifloat },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { unimp, "", },
- { Ifcmp, "c.f", Ifloat },
- { Ifcmp, "c.un", Ifloat },
- { Ifcmp, "c.eq", Ifloat },
- { Ifcmp, "c.ueq", Ifloat },
- { Ifcmp, "c.olt", Ifloat },
- { Ifcmp, "c.ult", Ifloat },
- { Ifcmp, "c.ole", Ifloat },
- { Ifcmp, "c.ule", Ifloat },
- { Ifcmp, "c,sf", Ifloat },
- { Ifcmp, "c.ngle",Ifloat },
- { Ifcmp, "c.seq", Ifloat },
- { Ifcmp, "c.ngl", Ifloat },
- { Ifcmp, "c.lt", Ifloat },
- { Ifcmp, "c.nge", Ifloat },
- { Ifcmp, "c.le", Ifloat },
- { Ifcmp, "c.ngt", Ifloat },
- { 0 }
- };
- void
- unimp(ulong inst)
- {
- print("op %d\n", inst&0x3f);
- Bprint(bioout, "Unimplemented floating point Trap IR %.8lux\n", inst);
- longjmp(errjmp, 0);
- }
- void
- inval(ulong inst)
- {
- Bprint(bioout, "Invalid Operation Exception IR %.8lux\n", inst);
- longjmp(errjmp, 0);
- }
- void
- ifmt(int r)
- {
- Bprint(bioout, "Invalid Floating Data Format f%d pc 0x%lux\n", r, reg.r[15]);
- longjmp(errjmp, 0);
- }
- void
- floatop(int dst, int s1, int s2)
- {
- }
- void
- doubop(int dst, int s1, int s2)
- {
- }
- void
- Iswc1(ulong inst)
- {
- }
- void
- Ifsub(ulong ir)
- {
- }
- void
- Ifmov(ulong ir)
- {
- }
- void
- Ifabs(ulong ir)
- {
- }
- void
- Ifneg(ulong ir)
- {
- }
- void
- Icvtd(ulong ir)
- {
- }
- void
- Icvts(ulong ir)
- {
- }
- void
- Icvtw(ulong ir)
- {
- }
- void
- Ifadd(ulong ir)
- {
- }
- void
- Ifmul(ulong ir)
- {
- }
- void
- Ifdiv(ulong ir)
- {
- }
- void
- Ilwc1(ulong inst)
- {
- }
- void
- Ibcfbct(ulong inst)
- {
- }
- void
- Imtct(ulong ir)
- {
- }
- void
- Imfcf(ulong ir)
- {
- }
- void
- Icop1(ulong ir)
- {
- }
- void
- Ifcmp(ulong ir)
- {
- }
|