Code: Select all
int_irq0:
cli
push eax
call task_tick
test eax,eax
jnz .nosw
mov eax,[tss.esp0] ; (*)
cli
hlt
the line (*) give 0x10C1BC to EAX, which is correct according to what the TSS.ESP0 field should contain, but ESP is 0x10C1A4 (0x10C1A8 without the push eax).
Shouldn't ESP be 0x10C1B8 = 0x10C1BC - 4 (push eax) ?
Where am I wrong ?