restore PSW like 9393439a20 for AMD syscall

Change-Id: Ide0a8727af8d0d81361382dbd2460c7a6c5743fc
This commit is contained in:
Ben Gras 2014-11-20 16:42:32 +00:00
parent 65eccd1f74
commit c9278f9170

View file

@ -418,11 +418,17 @@ ENTRY(restore_user_context_syscall)
* enabling interrupts, and of course sysret instead of sysexit.
*/
mov 4(%esp), %ebp /* retrieve proc ptr arg */
/* restore PSW (before we switch to user stack!) */
movl PSWREG(%ebp), %edi /* load desired PSW to EDI */
push %edi
popf
mov PCREG(%ebp), %ecx /* sysret restores EIP using ECX */
mov SPREG(%ebp), %esp /* restore ESP directly */
mov AXREG(%ebp), %eax /* trap return value */
mov BXREG(%ebp), %ebx /* secondary return value */
movl PSWREG(%ebp), %edi /* load desired PSW to EDI */
sysret /* jump to EIP in user */
ENTRY(restore_user_context_int)