Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!tektronix!ogcvax!omsvax!hplabs!sri-unix!gwyn@brl-vld From: gwyn%brl-vld@sri-unix.UUCP Newsgroups: net.unix-wizards Subject: Re: What are IOT and EMT instructions? Message-ID: <4397@sri-arpa.UUCP> Date: Sat, 20-Aug-83 12:54:52 EDT Article-I.D.: sri-arpa.4397 Posted: Sat Aug 20 12:54:52 1983 Date-Received: Sun, 21-Aug-83 19:27:37 EDT Lines: 22 From: Doug Gwyn (VLD/VMB) IOT and EMT are PDP-11 machine instructions. On a non-PDP-11 UNIX these instructions probably don't exist, but signals SIGIOT and SIGEMT can still be generated; in fact, the abort() library function generates a SIGIOT to force a core dump. SIGEMT, on the other hand, is rarely used. On a PDP-11, unexpected IOT and EMT signals often are the result of accidentally executing data as instructions. Using ld's -n or -i flag will often help track this particular bug down. I do recall HCR's RT-11 emulator using EMT instructions (since RT-11 did), and kernel modification was necessary to keep these from generating SIGEMT and instead branch to a user process's EMT handler. If the code you are converting is PDP-11 assembly language, then the most probable cause of EMTs and IOTs would be the fact that these perform system calls on DEC operating systems and/or standalone applications, but UNIX has its own system calls (invoked by TRAP instructions on PDP-11s). In this case, you will have to find equivalent UNIX functions for the original EMTs/IOTs. I would suggest tossing whatever it is and redoing it in C, since there is no future in PDP-11 assembly language programming.