#
527da4ca |
|
27-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86[_64]: Separate bootloader and kernel GDT and IDT logic From now on bootloader sets up its own minimal valid GDT and IDT. Then the kernel replaces them with its own tables.
|
#
611376fe |
|
16-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: Let each CPU have its own GDT
|
#
76a1175d |
|
11-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Support for SMP on x86_64. 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.
|
#
65ad1ba3 |
|
26-May-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Made it possible to build the bootloader when targetting x86_64. * x86_64 is using the existing *_ia32 boot platforms. * Special flags are required when compiling the loader to get GCC to compile 32-bit code. This adds a new set of rules for compiling boot code rather than using the kernel rules, which compile using the necessary flags. * Some x86_64 private headers have been stubbed by #include'ing the x86 versions. These will be replaced later.
|
#
2e8aa19c |
|
10-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* The boot loader does now set up an IDT that allows it to catch processor exceptions (page faults and the like). The handler dumps possibly interesting information (registers, a (numerical) stack trace) to the serial output, and, if possible, also to the screen. That should help debugging boot loader crashes. * For the IDT the boot loader sets up for the kernel the descriptors are set up the same way, so until the kernel initializes the IDT itself (arch_init()) the facility is still in place and can thus catch very early kernel boot crashes. Unfortunately the on-screen output doesn't seem to work anymore at that point, so the output only goes to the serial port... * ... and to the debug syslog -- dprintf() does now append it there after debug_cleanup() has been called. Seems to work fine in qemu, but when I tested it on real hardware the debug syslog was gone. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42092 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
527da4ca8a4c008b58da456c01a49dcf16a98fbc |
|
27-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86[_64]: Separate bootloader and kernel GDT and IDT logic From now on bootloader sets up its own minimal valid GDT and IDT. Then the kernel replaces them with its own tables.
|
#
611376fef7e00967fb65342802ba668a807348d5 |
|
16-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: Let each CPU have its own GDT
|
#
76a1175dbe1a314563ca18c0b7fb82695a9730cd |
|
11-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Support for SMP on x86_64. 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.
|
#
65ad1ba320d945c9626f471c4fb0972ae49440b5 |
|
26-May-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Made it possible to build the bootloader when targetting x86_64. * x86_64 is using the existing *_ia32 boot platforms. * Special flags are required when compiling the loader to get GCC to compile 32-bit code. This adds a new set of rules for compiling boot code rather than using the kernel rules, which compile using the necessary flags. * Some x86_64 private headers have been stubbed by #include'ing the x86 versions. These will be replaced later.
|
#
2e8aa19c638e27939fd6aaa4e2570b2411e15368 |
|
10-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* The boot loader does now set up an IDT that allows it to catch processor exceptions (page faults and the like). The handler dumps possibly interesting information (registers, a (numerical) stack trace) to the serial output, and, if possible, also to the screen. That should help debugging boot loader crashes. * For the IDT the boot loader sets up for the kernel the descriptors are set up the same way, so until the kernel initializes the IDT itself (arch_init()) the facility is still in place and can thus catch very early kernel boot crashes. Unfortunately the on-screen output doesn't seem to work anymore at that point, so the output only goes to the serial port... * ... and to the debug syslog -- dprintf() does now append it there after debug_cleanup() has been called. Seems to work fine in qemu, but when I tested it on real hardware the debug syslog was gone. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42092 a95241bf-73f2-0310-859d-f6bbb57e9c96
|