mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-23 11:18:54 +00:00
Change doreti to take a trapframe instead of an intrframe.
Remove associated pushes of dummy units to convert frame. Reviewed by: jhb
This commit is contained in:
parent
fea0a15961
commit
21ad98bca8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=69431
@ -59,7 +59,7 @@ IDTVEC(vec_name) ; \
|
||||
lock ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#define IOAPICADDR(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 8
|
||||
#define REDIRIDX(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 12
|
||||
@ -231,7 +231,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
APIC_ITRACE(apic_itrace_leave, irq_num, APIC_ITRACE_LEAVE) ; \
|
||||
; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
/*
|
||||
* Handle "spurious INTerrupts".
|
||||
@ -386,7 +386,7 @@ _Xcpuast:
|
||||
lock
|
||||
incl CNAME(cpuast_cnt)
|
||||
MEXITCOUNT
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
1:
|
||||
/* We are already in the process of delivering an ast for this CPU */
|
||||
POP_FRAME
|
||||
|
@ -183,6 +183,7 @@ IDTVEC(fpu)
|
||||
call _npx_intr
|
||||
call __mtx_exit_giant_def
|
||||
|
||||
addl $4,%esp
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -220,10 +221,8 @@ calltrap:
|
||||
call _trap
|
||||
|
||||
/*
|
||||
* Return via _doreti to handle ASTs. Have to change trap frame
|
||||
* to interrupt frame.
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -265,7 +264,6 @@ IDTVEC(syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -298,7 +296,6 @@ IDTVEC(int0x80_syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -334,7 +331,6 @@ ENTRY(fork_trampoline)
|
||||
/*
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
movb $1,_intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
|
@ -183,6 +183,7 @@ IDTVEC(fpu)
|
||||
call _npx_intr
|
||||
call __mtx_exit_giant_def
|
||||
|
||||
addl $4,%esp
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -220,10 +221,8 @@ calltrap:
|
||||
call _trap
|
||||
|
||||
/*
|
||||
* Return via _doreti to handle ASTs. Have to change trap frame
|
||||
* to interrupt frame.
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -265,7 +264,6 @@ IDTVEC(syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -298,7 +296,6 @@ IDTVEC(int0x80_syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -334,7 +331,6 @@ ENTRY(fork_trampoline)
|
||||
/*
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
movb $1,_intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
|
@ -69,7 +69,7 @@ IDTVEC(vec_name) ; \
|
||||
movl _intr_countp + (irq_num) * 4,%eax ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#if 0
|
||||
; \
|
||||
@ -141,7 +141,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
MEXITCOUNT ; \
|
||||
/* We could usually avoid the following jmp by inlining some of */ \
|
||||
/* _doreti, but it's probably better to use less cache. */ \
|
||||
jmp doreti_next /* and catch up inside doreti */
|
||||
jmp _doreti /* and catch up inside doreti */
|
||||
|
||||
MCOUNT_LABEL(bintr)
|
||||
FAST_INTR(0,fastintr0, ENABLE_ICU1)
|
||||
|
@ -69,7 +69,7 @@ IDTVEC(vec_name) ; \
|
||||
movl _intr_countp + (irq_num) * 4,%eax ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#if 0
|
||||
; \
|
||||
@ -141,7 +141,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
MEXITCOUNT ; \
|
||||
/* We could usually avoid the following jmp by inlining some of */ \
|
||||
/* _doreti, but it's probably better to use less cache. */ \
|
||||
jmp doreti_next /* and catch up inside doreti */
|
||||
jmp _doreti /* and catch up inside doreti */
|
||||
|
||||
MCOUNT_LABEL(bintr)
|
||||
FAST_INTR(0,fastintr0, ENABLE_ICU1)
|
||||
|
@ -69,7 +69,7 @@ IDTVEC(vec_name) ; \
|
||||
movl _intr_countp + (irq_num) * 4,%eax ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#if 0
|
||||
; \
|
||||
@ -141,7 +141,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
MEXITCOUNT ; \
|
||||
/* We could usually avoid the following jmp by inlining some of */ \
|
||||
/* _doreti, but it's probably better to use less cache. */ \
|
||||
jmp doreti_next /* and catch up inside doreti */
|
||||
jmp _doreti /* and catch up inside doreti */
|
||||
|
||||
MCOUNT_LABEL(bintr)
|
||||
FAST_INTR(0,fastintr0, ENABLE_ICU1)
|
||||
|
@ -59,7 +59,7 @@ IDTVEC(vec_name) ; \
|
||||
lock ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#define IOAPICADDR(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 8
|
||||
#define REDIRIDX(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 12
|
||||
@ -231,7 +231,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
APIC_ITRACE(apic_itrace_leave, irq_num, APIC_ITRACE_LEAVE) ; \
|
||||
; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
/*
|
||||
* Handle "spurious INTerrupts".
|
||||
@ -386,7 +386,7 @@ _Xcpuast:
|
||||
lock
|
||||
incl CNAME(cpuast_cnt)
|
||||
MEXITCOUNT
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
1:
|
||||
/* We are already in the process of delivering an ast for this CPU */
|
||||
POP_FRAME
|
||||
|
@ -183,6 +183,7 @@ IDTVEC(fpu)
|
||||
call _npx_intr
|
||||
call __mtx_exit_giant_def
|
||||
|
||||
addl $4,%esp
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -220,10 +221,8 @@ calltrap:
|
||||
call _trap
|
||||
|
||||
/*
|
||||
* Return via _doreti to handle ASTs. Have to change trap frame
|
||||
* to interrupt frame.
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
@ -265,7 +264,6 @@ IDTVEC(syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -298,7 +296,6 @@ IDTVEC(int0x80_syscall)
|
||||
cli /* atomic astpending access */
|
||||
cmpl $0,_astpending /* AST pending? */
|
||||
je doreti_syscall_ret /* no, get out of here */
|
||||
subl $4,%esp /* dummy unit for interrupt frame */
|
||||
movb $1,_intr_nesting_level
|
||||
jmp _doreti
|
||||
|
||||
@ -334,7 +331,6 @@ ENTRY(fork_trampoline)
|
||||
/*
|
||||
* Return via _doreti to handle ASTs.
|
||||
*/
|
||||
subl $4,%esp /* dummy unit to finish intr frame */
|
||||
movb $1,_intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
|
@ -129,7 +129,6 @@ ENTRY(vm86_bioscall)
|
||||
/*
|
||||
* Return via _doreti
|
||||
*/
|
||||
subl $4,%esp /* dummy unit */
|
||||
incb _intr_nesting_level
|
||||
MEXITCOUNT
|
||||
jmp _doreti
|
||||
|
@ -59,7 +59,7 @@ IDTVEC(vec_name) ; \
|
||||
lock ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#define IOAPICADDR(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 8
|
||||
#define REDIRIDX(irq_num) CNAME(int_to_apicintpin) + 16 * (irq_num) + 12
|
||||
@ -231,7 +231,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
APIC_ITRACE(apic_itrace_leave, irq_num, APIC_ITRACE_LEAVE) ; \
|
||||
; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
/*
|
||||
* Handle "spurious INTerrupts".
|
||||
@ -386,7 +386,7 @@ _Xcpuast:
|
||||
lock
|
||||
incl CNAME(cpuast_cnt)
|
||||
MEXITCOUNT
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
1:
|
||||
/* We are already in the process of delivering an ast for this CPU */
|
||||
POP_FRAME
|
||||
|
@ -69,7 +69,7 @@ IDTVEC(vec_name) ; \
|
||||
movl _intr_countp + (irq_num) * 4,%eax ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#if 0
|
||||
; \
|
||||
@ -141,7 +141,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
MEXITCOUNT ; \
|
||||
/* We could usually avoid the following jmp by inlining some of */ \
|
||||
/* _doreti, but it's probably better to use less cache. */ \
|
||||
jmp doreti_next /* and catch up inside doreti */
|
||||
jmp _doreti /* and catch up inside doreti */
|
||||
|
||||
MCOUNT_LABEL(bintr)
|
||||
FAST_INTR(0,fastintr0, ENABLE_ICU1)
|
||||
|
@ -69,7 +69,7 @@ IDTVEC(vec_name) ; \
|
||||
movl _intr_countp + (irq_num) * 4,%eax ; \
|
||||
incl (%eax) ; \
|
||||
MEXITCOUNT ; \
|
||||
jmp doreti_next
|
||||
jmp _doreti
|
||||
|
||||
#if 0
|
||||
; \
|
||||
@ -141,7 +141,7 @@ __CONCAT(Xresume,irq_num): ; \
|
||||
MEXITCOUNT ; \
|
||||
/* We could usually avoid the following jmp by inlining some of */ \
|
||||
/* _doreti, but it's probably better to use less cache. */ \
|
||||
jmp doreti_next /* and catch up inside doreti */
|
||||
jmp _doreti /* and catch up inside doreti */
|
||||
|
||||
MCOUNT_LABEL(bintr)
|
||||
FAST_INTR(0,fastintr0, ENABLE_ICU1)
|
||||
|
@ -90,13 +90,14 @@ _netisrs:
|
||||
.text
|
||||
|
||||
/*
|
||||
* void doreti(struct trapframe)
|
||||
*
|
||||
* Handle return from interrupts, traps and syscalls.
|
||||
*/
|
||||
SUPERALIGN_TEXT
|
||||
.type _doreti,@function
|
||||
_doreti:
|
||||
FAKE_MCOUNT(_bintr) /* init "from" _bintr -> _doreti */
|
||||
addl $4,%esp /* discard unit number */
|
||||
doreti_next:
|
||||
decb _intr_nesting_level
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user