diff options
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/x86/lapic/secondary.S | 6 | ||||
-rw-r--r-- | src/cpu/x86/sipi_vector.S | 2 | ||||
-rw-r--r-- | src/cpu/x86/smm/smm_stub.S | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/src/cpu/x86/lapic/secondary.S b/src/cpu/x86/lapic/secondary.S index 073e6b485b..d36bc9a645 100644 --- a/src/cpu/x86/lapic/secondary.S +++ b/src/cpu/x86/lapic/secondary.S @@ -61,9 +61,11 @@ __ap_protected_start: #if ENV_X86_64 /* entry64.inc preserves ebx. */ #include <cpu/x86/64bit/entry64.inc> - mov secondary_stack, %rsp + movabs secondary_stack, %rax + mov %rax, %rsp andl $0xfffffff0, %esp - mov secondary_cpu_index, %rdi + movabs secondary_cpu_index, %rax + mov %rax, %rdi #else /* Set the stack pointer, and flag that we are done */ xorl %eax, %eax diff --git a/src/cpu/x86/sipi_vector.S b/src/cpu/x86/sipi_vector.S index f9b29576bd..d8156b88a8 100644 --- a/src/cpu/x86/sipi_vector.S +++ b/src/cpu/x86/sipi_vector.S @@ -220,7 +220,7 @@ load_msr: mov %rsi, %rdi /* cpu_num */ - movl c_handler, %eax + movabs c_handler, %eax call *%rax #else /* c_handler(cpu_num), preserve proper stack alignment */ diff --git a/src/cpu/x86/smm/smm_stub.S b/src/cpu/x86/smm/smm_stub.S index 0c690da986..07be047a36 100644 --- a/src/cpu/x86/smm/smm_stub.S +++ b/src/cpu/x86/smm/smm_stub.S @@ -210,7 +210,7 @@ apicid_end: mov %rsp, %rdi /* *arg */ - movl c_handler, %eax + movabs c_handler, %eax call *%rax /* |