Correct irq asm handling
This commit is contained in:
parent
3fb667d62e
commit
1e7f99a3e2
@ -7,8 +7,14 @@
|
|||||||
.globl pit_handler
|
.globl pit_handler
|
||||||
.type pit_handler, @function
|
.type pit_handler, @function
|
||||||
pit_handler: // already got eflags, cs and eip on stack thanks to CPU
|
pit_handler: // already got eflags, cs and eip on stack thanks to CPU
|
||||||
pushl $0 // err_code esp+12+8*4=44
|
pushl $0 // err_code esp+12+7*4=40
|
||||||
pushal // (general reg) esp+12
|
pushl %ebp
|
||||||
|
pushl %eax
|
||||||
|
pushl %ecx
|
||||||
|
pushl %edx
|
||||||
|
pushl %ebx
|
||||||
|
pushl %esi
|
||||||
|
pushl %edi
|
||||||
subl $2, %esp // (alignment) esp+10
|
subl $2, %esp // (alignment) esp+10
|
||||||
pushw %ss // esp+8
|
pushw %ss // esp+8
|
||||||
pushw %ds // esp+6
|
pushw %ds // esp+6
|
||||||
@ -31,7 +37,13 @@ pit_handler: // already got eflags, cs and eip on stack thanks to CPU
|
|||||||
popw %ds
|
popw %ds
|
||||||
popw %ss
|
popw %ss
|
||||||
addl $2,%esp
|
addl $2,%esp
|
||||||
popal
|
popl %edi
|
||||||
|
popl %esi
|
||||||
|
popl %ebx
|
||||||
|
popl %edx
|
||||||
|
popl %ecx
|
||||||
|
popl %eax
|
||||||
|
popl %ebp
|
||||||
addl $4, %esp /* Ignore "error code" */
|
addl $4, %esp /* Ignore "error code" */
|
||||||
|
|
||||||
/* This restores the eflags, the cs and the eip registers */
|
/* This restores the eflags, the cs and the eip registers */
|
||||||
|
Loading…
Reference in New Issue
Block a user