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@xxxxxxxxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel
|