summaryrefslogtreecommitdiff
path: root/src/kernel/arch/i386/interrupts/isr_stub.s
blob: a8a97b3de5a83b94fcf0d2179a4768bd2d62bd6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.section .text

.global _isr_stubs
_isr_stubs:

.rept 256
	.align 8
	pushal
	call _isr_stage2
.endr

_isr_stage2:
	cld

	// convert the return address into the vector nr
	pop %eax
	add $-_isr_stubs, %eax
	shr $3, %eax
	push %eax

	call isr_stage3
	add $4, %esp

	popal
	iret