On Sun, 24 Feb 2002, Andrew Gallatin wrote: > > I'm not fluent in x86 asm, so can you confirm for me what you're > attempting to do here? > > I think you're making critical_enter()/critical_exit() cheaper by not > actually messing with the interrupt hardware when they're called. > Very much like what we do in 4-stable. > > Instead, you set/clear a per-cpu flag (or incr/decr a counter). If an > interrupt comes in when you're inside a critical section, you make > note of it & mask interrupts on that cpu. In critical_exit(), > you run the interrupt handler if there's a pending interrupt, and > unmask interrupts. If there's not a pending interrupt, you just clear > the flag (or devrement a counter). > > Is that basically it? > > If so, I'm wondering if this is even possible on alpha, where we don't > have direct access to the hardware. However, according to the psuedo > code for rti in the Brown book, munging with the saved PSL in > trapframe to set the IPL should work. Hmm..
I think we can tweak the saved PSL and it should be able to mask interrupts in the same way as for x86. This should be quite easy for ia64 too. -- Doug Rabson Mail: [EMAIL PROTECTED] Phone: +44 20 8348 6160 To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message