The i960 simulator in gdb 5.0 does not appear to
support the "notor" instruction.  Apparently gcc
can produce it since I found it. :)

0xa00097b4 <IMFS_evaluate_permission+4>:        notor   7,r6,g4


Program received signal SIGILL, Illegal instruction.
IMFS_evaluate_permission (node=0xa001e200, flags=1)
    at ../../../../../../rtems-4.5.0-beta3/c/src/lib/libc/imfs_eval.c:74
74        if ( !rtems_libio_is_valid_perms( flags ) ) {
(gdb960) info reg ip
ip             0xa00097b4       -1610573900

I grep'ed for notor and did not see it in the simulator.  

For what it is worth, here is the rule that produces
the notor instruction in gcc 2.95.2:

(define_insn ""
  [(set (match_operand:SI 0 "register_operand" "=d")
        (ior:SI (not:SI (match_operand:SI 1 "register_operand" "d"))
                (match_operand:SI 2 "logic_operand" "dIM")))]
  ""
  "*
{
  if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
    return \"nand       %C2,%1,%0\";
  if (i960_bypass (insn, operands[1], operands[2], 0))
    return \"notor      %2,%1,%0\";
  return \"ornot        %1,%2,%0\";
}")

FWIW I think the comment in gcc 2.95.2/gcc/config/i960.c above
i960_bypass is wrong about the routine always succeeding 
for the C* series.  I think it always fails!  Could someone
doublecheck my reading of this?


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
[EMAIL PROTECTED]                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985

Reply via email to