diff options
Diffstat (limited to 'sys/i386/isa/apic_vector.s')
-rw-r--r-- | sys/i386/isa/apic_vector.s | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/i386/isa/apic_vector.s b/sys/i386/isa/apic_vector.s index fbaceff..68b6c77 100644 --- a/sys/i386/isa/apic_vector.s +++ b/sys/i386/isa/apic_vector.s @@ -304,10 +304,9 @@ _Xcpuast: FAKE_MCOUNT(13*4(%esp)) - orl $AST_PENDING, PCPU(ASTPENDING) /* XXX */ + MTX_LOCK_SPIN(sched_lock, 0) movl PCPU(CURPROC),%ebx - incl P_INTR_NESTING_LEVEL(%ebx) - sti + orl $PS_ASTPENDING, P_SFLAG(%ebx) movl PCPU(CPUID), %eax lock @@ -315,13 +314,13 @@ _Xcpuast: lock btrl %eax, CNAME(resched_cpus) jnc 2f - orl $AST_PENDING+AST_RESCHED, PCPU(ASTPENDING) + orl $PS_NEEDRESCHED, P_SFLAG(%ebx) lock incl CNAME(want_resched_cnt) 2: + MTX_UNLOCK_SPIN(sched_lock) lock incl CNAME(cpuast_cnt) - decl P_INTR_NESTING_LEVEL(%ebx) MEXITCOUNT jmp _doreti 1: |