svn commit: r232078 - stable/9/sys/amd64/acpica
Jung-uk Kim
jkim at FreeBSD.org
Thu Feb 23 21:50:13 UTC 2012
Author: jkim
Date: Thu Feb 23 21:50:13 2012
New Revision: 232078
URL: http://svn.freebsd.org/changeset/base/232078
Log:
MFC: r230958
Restore callee saved registers later and micro-optimize.
Modified:
stable/9/sys/amd64/acpica/acpi_switch.S
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/amd64/acpica/acpi_switch.S
==============================================================================
--- stable/9/sys/amd64/acpica/acpi_switch.S Thu Feb 23 21:48:39 2012 (r232077)
+++ stable/9/sys/amd64/acpica/acpi_switch.S Thu Feb 23 21:50:13 2012 (r232078)
@@ -120,15 +120,6 @@ ENTRY(acpi_restorecpu)
#undef SDT_SYSTSS
#undef SDT_SYSBSY
- /* Restore other callee saved registers. */
- movq PCB_R15(%rdi), %r15
- movq PCB_R14(%rdi), %r14
- movq PCB_R13(%rdi), %r13
- movq PCB_R12(%rdi), %r12
- movq PCB_RBP(%rdi), %rbp
- movq PCB_RSP(%rdi), %rsp
- movq PCB_RBX(%rdi), %rbx
-
/* Restore debug registers. */
movq PCB_DR0(%rdi), %rax
movq %rax, %dr0
@@ -145,6 +136,7 @@ ENTRY(acpi_restorecpu)
/* Restore FPU state. */
fninit
+ movq WAKEUP_CTX(fpusave), %rbx
movq WAKEUP_CTX(xsmask), %rax
testq %rax, %rax
jz 1f
@@ -153,19 +145,26 @@ ENTRY(acpi_restorecpu)
movl $XCR0, %ecx
/* xsetbv */
.byte 0x0f, 0x01, 0xd1
- movq WAKEUP_CTX(fpusave), %rcx
-/* xrstor (%rcx) */
- .byte 0x0f, 0xae, 0x29
+/* xrstor (%rbx) */
+ .byte 0x0f, 0xae, 0x2b
jmp 2f
1:
- movq WAKEUP_CTX(fpusave), %rcx
- fxrstor (%rcx)
+ fxrstor (%rbx)
2:
/* Reload CR0. */
movq PCB_CR0(%rdi), %rax
movq %rax, %cr0
+ /* Restore other callee saved registers. */
+ movq PCB_R15(%rdi), %r15
+ movq PCB_R14(%rdi), %r14
+ movq PCB_R13(%rdi), %r13
+ movq PCB_R12(%rdi), %r12
+ movq PCB_RBP(%rdi), %rbp
+ movq PCB_RSP(%rdi), %rsp
+ movq PCB_RBX(%rdi), %rbx
+
/* Restore return address. */
movq PCB_RIP(%rdi), %rax
movq %rax, (%rsp)
More information about the svn-src-stable-9
mailing list