76a1175dbe
No major changes to the kernel: just compiled in arch_smp.cpp and fixed the IDT load in arch_cpu_init_percpu to use the correct limit for x86_64 (uses sizeof(interrupt_descriptor)). In the boot loader, changed smp_boot_other_cpus to construct a temporary GDT and get the page directory address from CR3, as what's in kernel_args will be 64-bit stuff and will not work to switch the CPUs into 32-bit mode in the trampoline code. Refactored 64-bit kernel entry code to not use the stack after disabling paging, as the secondary CPUs are given a 32-bit virtual stack address by the SMP trampoline code which will no longer work. |
||
---|---|---|
.. | ||
alpha | ||
arm | ||
generic | ||
m68k | ||
mipsel | ||
ppc | ||
sh4 | ||
sparc | ||
x86 | ||
cpu.h | ||
debug_console.h | ||
debug.h | ||
elf.h | ||
int.h | ||
platform.h | ||
real_time_clock.h | ||
smp.h | ||
system_info.h | ||
thread_types.h | ||
thread.h | ||
timer.h | ||
user_debugger.h | ||
vm_translation_map.h | ||
vm_types.h | ||
vm.h |