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