-
-ENTRY(lcall7)
- pushfl # We get a different stack layout with call
- # gates, which has to be cleaned up later..
- pushl %eax
- SAVE_ALL
- movl %esp, %ebp
- pushl %ebp
- pushl $0x7
-do_lcall:
- movl EIP(%ebp), %eax # due to call gates, this is eflags, not eip..
- movl CS(%ebp), %edx # this is eip..
- movl EFLAGS(%ebp), %ecx # and this is cs..
- movl %eax,EFLAGS(%ebp) #
- movl %edx,EIP(%ebp) # Now we move them to their "normal" places
- movl %ecx,CS(%ebp) #
- GET_THREAD_INFO_WITH_ESP(%ebp) # GET_THREAD_INFO
- movl TI_exec_domain(%ebp), %edx # Get the execution domain
- call *EXEC_DOMAIN_handler(%edx) # Call the handler for the domain
- addl $4, %esp
- popl %eax
- jmp resume_userspace
-
-ENTRY(lcall27)
- pushfl # We get a different stack layout with call
- # gates, which has to be cleaned up later..
- pushl %eax
- SAVE_ALL
- movl %esp, %ebp
- pushl %ebp
- pushl $0x27
- jmp do_lcall
-
-