I've been seeing an occasional Illegal Instruction exception on the 5235 coldfire and found that its due to arch/m68knommu/kernel/ signal.c which has an empty push_cache(). I'm using a 100ms ITIMER so there are many opportunities for this bug.
You cannot put instructions in memory and expect the processor to run them without flushing the instruction cache. To fix this i've recoded the return from the user space signal handler to not use instructions on the stack. Doing it this way is more straight forward and doesnt require a cache flush (which creates inefficient memory access).
If you dont choose to integrate this patch, also note that there most likely a bug in setup_rt_frame() where it dangerously goes ahead and puts machine code on the stack. the 0x4600 instruction is not a "not.l d0" instruction as the comment suggests.
Wilson
signal.patch
Description: Binary data
_______________________________________________ uClinux-dev mailing list [email protected] http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by [email protected] To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev
