I''m searching Xen''s source code to understand exception
handling. I''ve
pasted a piece of code below.
In arch/x86/x86_32/entry.S:
error_code:
pushl %fs
pushl %es
pushl %ds
pushl %eax
xorl %eax,%eax
pushl %ebp
pushl %edi
pushl %esi
pushl %edx
decl %eax # eax = -1
pushl %ecx
pushl %ebx
cld
movl %gs,%ecx
movl ORIG_EAX(%esp), %esi # get the error code
movl GS(%esp), %edi # get the function address
movl %eax, ORIG_EAX(%esp)
movl %ecx, GS(%esp)
movl $(__HYPERVISOR_DS),%edx
movl %edx,%ds
movl %edx,%es
movl %edx,%fs
movl %edx,%gs
movl %esp,%edx
pushl %esi # push the error code
pushl %edx # push the pt_regs pointer
GET_CURRENT(%ebx)
call *%edi
addl $8,%esp
movb CS(%esp),%al
testb $3,%al
je restore_all_xen
jmp process_guest_exception_and_events
But I can not understand what function does following sentence refer to
movl GS(%esp), %edi # get the function address
Where does it come from?
Thanks,
Benjamin
-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xen-devel
Keir Fraser
2004-Oct-18 08:44 UTC
Re: [Xen-devel] What function pointer does %%gs contain?
The function address that is pushed by the individual fault handlers before they call the common error_code path. It''s a gross abuse of the GS symbolic constant. :-) Try running through one of the fault paths by hand, writing down the stack state at each step... HTH, Keir> I''m searching Xen''s source code to understand exception handling. I''ve > pasted a piece of code below. > > In arch/x86/x86_32/entry.S: > error_code: > pushl %fs > pushl %es > pushl %ds > pushl %eax > xorl %eax,%eax > pushl %ebp > pushl %edi > pushl %esi > pushl %edx > decl %eax # eax = -1 > pushl %ecx > pushl %ebx > cld > movl %gs,%ecx > movl ORIG_EAX(%esp), %esi # get the error code > movl GS(%esp), %edi # get the function address > movl %eax, ORIG_EAX(%esp) > movl %ecx, GS(%esp) > movl $(__HYPERVISOR_DS),%edx > movl %edx,%ds > movl %edx,%es > movl %edx,%fs > movl %edx,%gs > movl %esp,%edx > pushl %esi # push the error code > pushl %edx # push the pt_regs pointer > GET_CURRENT(%ebx) > call *%edi > addl $8,%esp > movb CS(%esp),%al > testb $3,%al > je restore_all_xen > jmp process_guest_exception_and_events > > But I can not understand what function does following sentence refer to > movl GS(%esp), %edi # get the function address > Where does it come from? > > Thanks, > Benjamin > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on ITManagersJournal > Use IT products in your business? Tell us what you think of them. Give us > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/xen-devel-=- MIME -=- I''m searching Xen''s source code to understand exception handling. I''ve pasted a piece of code below. In arch/x86/x86_32/entry.S: error_code: pushl %fs pushl %es pushl %ds pushl %eax xorl %eax,%eax pushl %ebp pushl %edi pushl %esi pushl %edx decl %eax # eax =3D -1 pushl %ecx pushl %ebx cld movl %gs,%ecx movl ORIG_EAX(%esp), %esi # get the error code movl GS(%esp), %edi # get the function address movl %eax, ORIG_EAX(%esp) movl %ecx, GS(%esp) movl $(__HYPERVISOR_DS),%edx movl %edx,%ds movl %edx,%es movl %edx,%fs movl %edx,%gs movl %esp,%edx pushl %esi # push the error code pushl %edx # push the pt_regs pointer GET_CURRENT(%ebx) call *%edi addl $8,%esp movb CS(%esp),%al testb $3,%al je restore_all_xen jmp process_guest_exception_and_events But I can not understand what function does following sentence refer to movl GS(%esp), %edi # get the function address Where does it come from? Thanks, Benjamin ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Xen-devel mailing list Xen-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xen-devel ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Xen-devel mailing list Xen-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xen-devel