1
0
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:
Jake Burkholder 2000-12-01 02:09:45 +00:00
parent fea0a15961
commit 21ad98bca8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=69431
13 changed files with 27 additions and 39 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -129,7 +129,6 @@ ENTRY(vm86_bioscall)
/*
* Return via _doreti
*/
subl $4,%esp /* dummy unit */
incb _intr_nesting_level
MEXITCOUNT
jmp _doreti

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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