.globl _vmm_pageFault .text .code32 _vmm_pageFault: xchgl %eax,(%esp) /* Save EAX */ movl 4(%esp),%eax /* Move EIP into EAX to use later */ pushl %ebx /* Save EBX */ movl 20(%esp),%ebx /* Save ESP for ring 3 to use later */ pushl %ecx /* Save ECX,EDX */ pushl %edx push %ebx /* Push ESP */ push %eax /* Push EIP */ movl %cr2,%eax /* Push the faulted address */ pushl %eax sti /* Turn interrupts back on we are now entrant safe */ call mm_pageFault /* Call our page fault handler */ addl $0xC,%esp /* Adjust the stack to compensate for pushed values */ popl %edx /* Restore EAX,EBX,ECX,EDX */ popl %ecx popl %ebx popl %eax iret /* Return from the interrupt */