diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2019-12-01 07:23:59 +0100 |
---|---|---|
committer | Patrick Rudolph <siro@das-labor.org> | 2020-08-24 07:04:58 +0000 |
commit | 18ad7fa51f5c6560c9d7a9bcf68e9e277e37cd49 (patch) | |
tree | 0f39a3649c25c652d83d918730a254ea7c566f5a /src/cpu/x86/sipi_vector.S | |
parent | c7a7531cee0e16893b5713cdfbbc6466339ec145 (diff) |
cpu/x86/sipi: Add x86_64 support
Enter long mode on secondary APs.
Tested on Lenovo T410 with additional x86_64 patches.
Tested on HP Z220 with additional x86_64 patches.
Still boots on x86_32.
Change-Id: I916dd8482d56c7509af9ad0d3b9c28bdc48fd0b1
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37395
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/cpu/x86/sipi_vector.S')
-rw-r--r-- | src/cpu/x86/sipi_vector.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cpu/x86/sipi_vector.S b/src/cpu/x86/sipi_vector.S index ba1ecb7de6..bda49cc029 100644 --- a/src/cpu/x86/sipi_vector.S +++ b/src/cpu/x86/sipi_vector.S @@ -192,11 +192,24 @@ load_msr: mov %eax, %cr4 #endif +#ifdef __x86_64__ + /* entry64.inc preserves ebx. */ +#include <cpu/x86/64bit/entry64.inc> + + mov %rsi, %rdi /* cpu_num */ + + movl c_handler, %eax + call *%rax +#else /* c_handler(cpu_num), preserve proper stack alignment */ sub $12, %esp push %esi /* cpu_num */ + mov c_handler, %eax call *%eax +#endif + + halt_jump: hlt jmp halt_jump |