search for: fix_stack

Displaying 5 results from an estimated 5 matches for "fix_stack".

2007 Apr 18
0
[RFC, PATCH 11/24] i386 Vmi segment changes
..._vm macro used in ptrace.h is very similar to the flag mixing of EFLAGS and CS used to test in one branch in entry.S. To make the COMPARE_SEGMENT_REG macro work, it must contain both the push and the pop, requiring an additional load of EAX after the possible stack fixup. This is because FIXUP_ESPFIX_STACK destroys %EAX again with a call to C code. In all, the overhead is couple of instructions, and no extra branches. Note that I prefer to use the testing of selectors in the form: SELECTOR_CLEAR_RPL(sel) == __KERNEL_SEL Instead of SELECTOR == (%seg), where %seg is the live register value. This i...
2007 Apr 18
0
[RFC, PATCH 11/24] i386 Vmi segment changes
..._vm macro used in ptrace.h is very similar to the flag mixing of EFLAGS and CS used to test in one branch in entry.S. To make the COMPARE_SEGMENT_REG macro work, it must contain both the push and the pop, requiring an additional load of EAX after the possible stack fixup. This is because FIXUP_ESPFIX_STACK destroys %EAX again with a call to C code. In all, the overhead is couple of instructions, and no extra branches. Note that I prefer to use the testing of selectors in the form: SELECTOR_CLEAR_RPL(sel) == __KERNEL_SEL Instead of SELECTOR == (%seg), where %seg is the live register value. This i...
2007 Apr 18
2
[PATCH 1/3] Paravirtualization: Kernel Ring Cleanups
...%eax + jb resume_kernel # returning to kernel or vm86-space ENTRY(resume_userspace) cli # make sure we don't miss an interrupt # setting need_resched or sigpending @@ -386,17 +388,14 @@ syscall_badsys: /* put ESP to the proper location */ \ movl %eax, %esp; #define UNWIND_ESPFIX_STACK \ - pushl %eax; \ - movl %ss, %eax; \ - /* see if on 16bit stack */ \ - cmpw $__ESPFIX_SS, %ax; \ + COMPARE_SEGMENT_REG(__ESPFIX_SS, %ss); \ jne 28f; \ - movl $__KERNEL_DS, %edx; \ + movl $__USER_DS, %edx; \ movl %edx, %ds; \ movl %edx, %es; \ /* switch to 32bit stack */ \ FIXUP_ESPFIX_ST...
2007 Apr 18
2
[PATCH 1/3] Paravirtualization: Kernel Ring Cleanups
...%eax + jb resume_kernel # returning to kernel or vm86-space ENTRY(resume_userspace) cli # make sure we don't miss an interrupt # setting need_resched or sigpending @@ -386,17 +388,14 @@ syscall_badsys: /* put ESP to the proper location */ \ movl %eax, %esp; #define UNWIND_ESPFIX_STACK \ - pushl %eax; \ - movl %ss, %eax; \ - /* see if on 16bit stack */ \ - cmpw $__ESPFIX_SS, %ax; \ + COMPARE_SEGMENT_REG(__ESPFIX_SS, %ss); \ jne 28f; \ - movl $__KERNEL_DS, %edx; \ + movl $__USER_DS, %edx; \ movl %edx, %ds; \ movl %edx, %es; \ /* switch to 32bit stack */ \ FIXUP_ESPFIX_ST...
2007 Apr 18
33
[RFC PATCH 00/33] Xen i386 paravirtualization support
Unlike full virtualization in which the virtual machine provides the same platform interface as running natively on the hardware, paravirtualization requires modification to the guest operating system to work with the platform interface provided by the hypervisor. Xen was designed with performance in mind. Calls to the hypervisor are minimized, batched if necessary, and non-critical codepaths