haiku/src/system
Michael Lotz 3fa048c0a6 When starting the other CPUs from the bootloader we did not wait for any
confirmation after sending off the startup IPIs. We simply moved on and setup
the temporary stack address for the next CPU to be started. With this it was
possible that the trampoline code did not manage to load the address before
we overwrote it. So for configurations with more than two CPUs it was possible
that two CPUs were setup to the same kernel stack which could have caused all
sorts of things - most likely a tripple fault and a reboot. On real hardware
this seems very unlikely but it was easily reproducible with QEMU and -smp >2.
We now use the shared trampoline stack to implement a notification mechanism.
The trampoline code will clear the stack location variable once it has loaded
everything it needs from the trampoline stack. On the other side
smp_boot_other_cpus() will wait for this variable to be cleared after it sent
the startup IPIs so that it knows when it can safely move on and overwrite the
area to boot the next CPU.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23800 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-31 22:15:52 +00:00
..
boot When starting the other CPUs from the bootloader we did not wait for any 2008-01-31 22:15:52 +00:00
glue crt files for m68k. 2007-10-22 00:06:13 +00:00
kernel * Debugger modules now have two methods: enter_debugger() and exit_debugger(). 2008-01-31 12:25:43 +00:00
ldscripts Our ld script is actually closer to the x86 one... this should work. 2008-01-15 15:00:00 +00:00
libroot Added experimental ktrace_[v]printf() functions to libroot. Their output 2008-01-21 15:10:05 +00:00
runtime_loader Fix the static cleanup mechanism introduced to the runtime_loader/libroot: 2008-01-13 18:49:27 +00:00
Jamfile Reorganized building of kernel, boot loader, and libroot. 2005-11-27 00:27:19 +00:00