home *** CD-ROM | disk | FTP | other *** search
- #include "register.h"
- #include "symtab.h"
- #include "diblock.h"
- #include "instrn.h"
- #include "process.h"
-
- dinstrn *
- i_negfmt(dipc, fmt, ft, fs, fd)
- dinstrn *dipc;
- int fmt;
- int ft;
- int fs;
- int fd;
- {
- float singles;
- float singled;
- double doubles;
- double doubled;
-
- switch (fmt)
- {
- case FMT_SINGLE:
- procsget(CP1G(fs), *(unsigned long *)&singles);
-
- singled = -singles;
-
- procsput(CP1G(fd), *(unsigned long *)&singled);
-
- break;
-
- case FMT_DOUBLE:
- /*
- * Note apparent reversal of words within
- * doubles here -- no idea why.
- */
- procsget(CP1G(fs), *((unsigned long *)&doubles + 1));
-
- procsget(CP1G(fs) + 1, *(unsigned long *)&doubles);
-
- doubled = -doubles;
-
- procsput(CP1G(fd), *((unsigned long *)&doubled + 1));
-
- procsput(CP1G(fd) + 1, *(unsigned long *)&doubled);
- break;
-
- default:
- unrecognised(dipc);
- break;
- }
-
- return dipc;
- }
-
- dinstrn *
- c_noop(dipc)
- dinstrn *dipc;
- {
- return dipc;
- }
-
- dinstrn *
- i_nor(dipc, rs, rt, rd, shamt, funct)
- dinstrn *dipc;
- int rs;
- int rt;
- int rd;
- int shamt;
- int funct;
- {
- unsigned long s;
- unsigned long t;
-
- procsget(rs, s);
-
- procsget(rt, t);
-
- procsput(rd, ~(s | t));
-
- return dipc;
- }
-