#
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
|
#
d2a1be1c |
|
18-Aug-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Cleaner separation of 32-/64-bit specific CPU/interrupt code. Renamed {32,64}/int.cpp to {32,64}/descriptors.cpp, which now contain functions for GDT and TSS setup that were previously in arch_cpu.cpp, as well as the IDT setup code. These get called from the init functions in arch_cpu.cpp, rather than having a bunch of ifdef'd chunks of code for 32/64.
|
#
0897e314 |
|
02-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Merged x86_64 headers into x86 headers. Not many changes seeing as there's not much x86_64 stuff done yet. Small differences are handled with ifdefs, large differences (descriptors.h, struct iframe) have separate headers under arch/x86/32 and arch/x86/64.
|
#
afd6dfc8 |
|
28-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented first basic APM driver. Only tested with QEMU so far, that's why it's currently disabled. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16120 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba61df6d |
|
10-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Beginnings of APM support: we now connect to the APM BIOS in 32 bit protected mode. We don't do anything with it yet, though, so the BIOS will probably ignore us since we are supposed to poll for events. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15900 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8e26b085 |
|
04-Apr-2005 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed double fault handler. Personally I disclaim all responsiblity for these changes. I was mostly just staring in amazement at the screen while Axel and Thomas were discussing IA32 internals. A particularly fascinating moment was when Thomas produced the cause of a bug we had been trying to track down for hours off the top of his head (of course iret behaves specially when the NT bit is set :-). His slowness must be excused though, since he hadn't slept for more then 30 hours. ;-) The code doesn't wholeheartedly deal with multi-processor machines yet. Axel will certainly do some cleanup... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12239 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e5b0e0b5 |
|
04-Apr-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Changed the set_segment_descriptor()'s usage of the limit/granularity flag. Now, it will choose how to set the granularity by evaluating the limit. This call was actually already used this way in the kernel, so that the TLS and TSS segments were much too large (harmless but incorrect). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c2c20b78 |
|
13-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Incorporated some code from NewOS to set up a double fault handler. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10444 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
afad65de |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Replaced all remaining PAGE_SIZE with B_PAGE_SIZE, addr with addr_t. Removed the definition of PAGE_SIZE and addr. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9433 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
074a16b5 |
|
07-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added a private tls.h file with definitions for the reserved TLS slots. Renamed i386_set_kstack() to i386_set_tss_and_kstack(), because that's what it does. Added a new function arch_thread_init_tls() which must be called after having allocated the TLS area. Renamed arch_thread_initialize_kthread_stack() to arch_thread_init_kthread_stack() to be more consistent. Changed the parameters for arch_thread_enter_uspace() - it now gets a pointer to the thread structure and takes the user stack pointer from there (which might also be architectural different). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7208e95f |
|
06-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the gdt_idt_descr struct from arch_stage2.h to stage2_priv.h. Moved the tss_descriptor structure to descriptor.h, updated it to be a segment_descriptor structure, and provided inlines for set_tss_descriptor(), set_segment_descriptor(), set_segment_descriptor_base(), and clear_segment_descriptor(). Also added defines for the different privilege levels and descriptor types. Removed the unusused and incorrect TSS definition, introduced new TSS_BASE_SEGMENT and TLS_BASE_SEGMENT macros. Removed include of arch/cpu.h in arch_cpu.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2360 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f83ea1 |
|
25-Jul-2002 |
David Reid <dreid@nowhere.fake> |
Add a new line at the end... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@445 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fde77afb |
|
24-Jul-2002 |
notion <notion@nowhere.fake> |
Ported my NewOS changes to OpenBeOS. A couple of changes in various interrupt and thread functions and structures. These make it now possible to change the stack at any time without making the kernel crash. This is needed for calling VESA 3.0 VBE functions through the protected mode interface. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@422 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
|
#
d2a1be1c4e4a8ae3879d7f59b07a6924c62b4b14 |
|
18-Aug-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Cleaner separation of 32-/64-bit specific CPU/interrupt code. Renamed {32,64}/int.cpp to {32,64}/descriptors.cpp, which now contain functions for GDT and TSS setup that were previously in arch_cpu.cpp, as well as the IDT setup code. These get called from the init functions in arch_cpu.cpp, rather than having a bunch of ifdef'd chunks of code for 32/64.
|
#
0897e314b79d09b04349d3cfe6093a3fd6220da1 |
|
02-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Merged x86_64 headers into x86 headers. Not many changes seeing as there's not much x86_64 stuff done yet. Small differences are handled with ifdefs, large differences (descriptors.h, struct iframe) have separate headers under arch/x86/32 and arch/x86/64.
|
#
afd6dfc8b400a598ff4b610951548c5a7d2007cb |
|
28-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented first basic APM driver. Only tested with QEMU so far, that's why it's currently disabled. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16120 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba61df6d0b3076ef132a0c602a5908bfeffcb7a3 |
|
10-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Beginnings of APM support: we now connect to the APM BIOS in 32 bit protected mode. We don't do anything with it yet, though, so the BIOS will probably ignore us since we are supposed to poll for events. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15900 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8e26b085e5a670068c97f26ac33a90d930c4dc5d |
|
04-Apr-2005 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed double fault handler. Personally I disclaim all responsiblity for these changes. I was mostly just staring in amazement at the screen while Axel and Thomas were discussing IA32 internals. A particularly fascinating moment was when Thomas produced the cause of a bug we had been trying to track down for hours off the top of his head (of course iret behaves specially when the NT bit is set :-). His slowness must be excused though, since he hadn't slept for more then 30 hours. ;-) The code doesn't wholeheartedly deal with multi-processor machines yet. Axel will certainly do some cleanup... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12239 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e5b0e0b5e3568a70e543bb5632b50fb02a825738 |
|
04-Apr-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Changed the set_segment_descriptor()'s usage of the limit/granularity flag. Now, it will choose how to set the granularity by evaluating the limit. This call was actually already used this way in the kernel, so that the TLS and TSS segments were much too large (harmless but incorrect). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c2c20b7848e5db7d21a73cc8c23aa446192ad72f |
|
13-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Incorporated some code from NewOS to set up a double fault handler. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10444 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
afad65ded7a1258fc91659fb456f1a90d08e0598 |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Replaced all remaining PAGE_SIZE with B_PAGE_SIZE, addr with addr_t. Removed the definition of PAGE_SIZE and addr. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9433 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
074a16b53e0cd1fb421183e7b11242205e38be56 |
|
07-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added a private tls.h file with definitions for the reserved TLS slots. Renamed i386_set_kstack() to i386_set_tss_and_kstack(), because that's what it does. Added a new function arch_thread_init_tls() which must be called after having allocated the TLS area. Renamed arch_thread_initialize_kthread_stack() to arch_thread_init_kthread_stack() to be more consistent. Changed the parameters for arch_thread_enter_uspace() - it now gets a pointer to the thread structure and takes the user stack pointer from there (which might also be architectural different). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7208e95f0ebfb66272c2059aa23bc45446ad4e0f |
|
06-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the gdt_idt_descr struct from arch_stage2.h to stage2_priv.h. Moved the tss_descriptor structure to descriptor.h, updated it to be a segment_descriptor structure, and provided inlines for set_tss_descriptor(), set_segment_descriptor(), set_segment_descriptor_base(), and clear_segment_descriptor(). Also added defines for the different privilege levels and descriptor types. Removed the unusused and incorrect TSS definition, introduced new TSS_BASE_SEGMENT and TLS_BASE_SEGMENT macros. Removed include of arch/cpu.h in arch_cpu.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2360 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f83ea15d1ca541a16489f98129744b2058adc5 |
|
25-Jul-2002 |
David Reid <dreid@nowhere.fake> |
Add a new line at the end... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@445 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fde77afb37de0aee545dcd21b90db681cb00d784 |
|
24-Jul-2002 |
notion <notion@nowhere.fake> |
Ported my NewOS changes to OpenBeOS. A couple of changes in various interrupt and thread functions and structures. These make it now possible to change the stack at any time without making the kernel crash. This is needed for calling VESA 3.0 VBE functions through the protected mode interface. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@422 a95241bf-73f2-0310-859d-f6bbb57e9c96
|