|
@@ -269,10 +269,8 @@ ENTRY(secondary_startup_64)
|
|
/* rsi is pointer to real mode structure with interesting info.
|
|
/* rsi is pointer to real mode structure with interesting info.
|
|
pass it to C */
|
|
pass it to C */
|
|
movq %rsi, %rdi
|
|
movq %rsi, %rdi
|
|
- jmp start_cpu
|
|
|
|
-ENDPROC(secondary_startup_64)
|
|
|
|
|
|
|
|
-ENTRY(start_cpu)
|
|
|
|
|
|
+.Ljump_to_C_code:
|
|
/*
|
|
/*
|
|
* Jump to run C code and to be on a real kernel address.
|
|
* Jump to run C code and to be on a real kernel address.
|
|
* Since we are running on identity-mapped space we have to jump
|
|
* Since we are running on identity-mapped space we have to jump
|
|
@@ -305,7 +303,7 @@ ENTRY(start_cpu)
|
|
pushq %rax # target address in negative space
|
|
pushq %rax # target address in negative space
|
|
lretq
|
|
lretq
|
|
.Lafter_lret:
|
|
.Lafter_lret:
|
|
-ENDPROC(start_cpu)
|
|
|
|
|
|
+ENDPROC(secondary_startup_64)
|
|
|
|
|
|
#include "verify_cpu.S"
|
|
#include "verify_cpu.S"
|
|
|
|
|
|
@@ -313,11 +311,11 @@ ENDPROC(start_cpu)
|
|
/*
|
|
/*
|
|
* Boot CPU0 entry point. It's called from play_dead(). Everything has been set
|
|
* Boot CPU0 entry point. It's called from play_dead(). Everything has been set
|
|
* up already except stack. We just set up stack here. Then call
|
|
* up already except stack. We just set up stack here. Then call
|
|
- * start_secondary() via start_cpu().
|
|
|
|
|
|
+ * start_secondary() via .Ljump_to_C_code.
|
|
*/
|
|
*/
|
|
ENTRY(start_cpu0)
|
|
ENTRY(start_cpu0)
|
|
movq initial_stack(%rip), %rsp
|
|
movq initial_stack(%rip), %rsp
|
|
- jmp start_cpu
|
|
|
|
|
|
+ jmp .Ljump_to_C_code
|
|
ENDPROC(start_cpu0)
|
|
ENDPROC(start_cpu0)
|
|
#endif
|
|
#endif
|
|
|
|
|