mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 11:04:44 +08:00
33e20b07be
The stack locking and stack assignment macro LOAD_REALMODE_ESP fails to
work when invoked from the 64bit trampoline entry point:
trampoline_start64
trampoline_compat
LOAD_REALMODE_ESP <- lock
Accessing tr_lock is only possible from 16bit mode. For the compat entry
point this needs to be pa_tr_lock so that the required relocation entry is
generated. Otherwise it locks the non-relocated address which is
aside of being wrong never cleared in secondary_startup_64() causing all
but the first CPU to get stuck on the lock.
Make the macro take an argument lock_pa which defaults to 0 and rename it
to LOCK_AND_LOAD_REALMODE_ESP to make it clear what this is about.
Fixes:
|
||
---|---|---|
.. | ||
.gitignore | ||
bioscall.S | ||
copy.S | ||
header.S | ||
Makefile | ||
realmode.h | ||
realmode.lds.S | ||
reboot.S | ||
regs.c | ||
stack.S | ||
trampoline_32.S | ||
trampoline_64.S | ||
trampoline_common.S | ||
video-bios.c | ||
video-mode.c | ||
video-vesa.c | ||
video-vga.c | ||
wakemain.c | ||
wakeup_asm.S | ||
wakeup.h |