I found a couple of minor nits, but only one real bug. In i386/swtch.s
I forgot to change out a WANT_RESCHED for AST_RESCHED:
sw1a:
call _chooseproc /* trash ecx, edx, ret eax*/
testl %eax,%eax
CROSSJUMP(je, _idle, jne) /* if no proc, idle */
movl %eax,%ecx
xorl %eax,%eax
andl $~WANT_RESCHED,_astpending
The problem is that a kernel build is not reporting any errors!
WANT_RESCHED does not exist at all, anywhere. If I change it to
a garbage name the kernel still builds. I don't get it.
In anycase, please try changing WANT_RESCHED to AST_RESCHED in
i386/i386/swtch.s and see if that fixes the reported performance
problems. If WANT_RESCHED defaults to 0 by being undefined, then
the reschedule flag is never cleared when a context switch is made
and this could certainly lead to problems.
I also found a movb that had to be a movl, but since only the low bits
were being used anyway this would not have caused any problems.
-Matt
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message