Triple fault enabling multitasking
Posted: Sun Jan 11, 2009 8:01 am
I am enabling multitasking and the system triple faults when i try to switch to cloned directory after enabling paging.
Followed a similar post here
Here is the output from my bochslog:
and "info idt" gives
and "info gdt"
and "info tab" gives
when the system faults bochs debugger gives the following at the terminal
I am refering to JamesM tutorial and using gcc, ld, nasm, bochs for development and testing
Thanks.
Followed a similar post here
Here is the output from my bochslog:
Code: Select all
00045988034i[BIOS ] Booting from 0000:7c00
00083250000i[XGUI ] charmap update. Font Height is 16
00096750000i[XGUI ] charmap update. Font Height is 16
00139500000i[XGUI ] charmap update. Font Height is 16
00820201554i[CPU ] CPU is in protected mode (active)
00820201554i[CPU ] CS.d_b = 32 bit
00820201554i[CPU ] SS.d_b = 32 bit
00820201554i[CPU ] | EAX=c0083000 EBX=00026260 ECX=000b8000 EDX=000003d5
00820201554i[CPU ] | ESP=00067d08 EBP=00067d18 ESI=000263cf EDI=00026419
00820201554i[CPU ] | IOPL=0 id vip vif ac vm RF nt of df IF tf SF zf af PF cf
00820201554i[CPU ] | SEG selector base limit G D
00820201554i[CPU ] | SEG sltr(index|ti|rpl) base limit G D
00820201554i[CPU ] | CS:0008( 0001| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | DS:0010( 0002| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | SS:0010( 0002| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | ES:0010( 0002| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | FS:0010( 0002| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | GS:0010( 0002| 0| 0) 00000000 000fffff 1 1
00820201554i[CPU ] | EIP=00102b1d (00102b1d)
00820201554i[CPU ] | CR0=0xe0000011 CR1=0 CR2=0x001080f0
00820201554i[CPU ] | CR3=0xc0083000 CR4=0x00000000
00820201554e[CPU ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
and "info idt" gives
Code: Select all
Interrupt Descriptor Table (base=0x00108080, limit=2047):
IDT[0x00]=32-Bit Interrupt Gate target=0x0008:0x0010004e, DPL=0
IDT[0x01]=32-Bit Interrupt Gate target=0x0008:0x00100058, DPL=0
IDT[0x02]=32-Bit Interrupt Gate target=0x0008:0x00100062, DPL=0
IDT[0x03]=32-Bit Interrupt Gate target=0x0008:0x0010006c, DPL=0
IDT[0x04]=32-Bit Interrupt Gate target=0x0008:0x00100076, DPL=0
IDT[0x05]=32-Bit Interrupt Gate target=0x0008:0x00100080, DPL=0
IDT[0x06]=32-Bit Interrupt Gate target=0x0008:0x0010008a, DPL=0
IDT[0x07]=32-Bit Interrupt Gate target=0x0008:0x00100094, DPL=0
IDT[0x08]=32-Bit Interrupt Gate target=0x0008:0x0010009e, DPL=0
IDT[0x09]=32-Bit Interrupt Gate target=0x0008:0x001000a6, DPL=0
IDT[0x0a]=32-Bit Interrupt Gate target=0x0008:0x001000b0, DPL=0
..........and so on....
and "info gdt"
Code: Select all
Global Descriptor Table (base=0x00108040, limit=39):
GDT[0x00]=??? descriptor hi=0x00000000, lo=0x00000000
GDT[0x01]=Code segment, laddr=00000000, limit=fffff * 4Kbytes, Execute/Read, 32-bit
GDT[0x02]=Data segment, laddr=00000000, limit=fffff * 4Kbytes, Read/Write, Accessed
GDT[0x03]=Code segment, laddr=00000000, limit=fffff * 4Kbytes, Execute/Read, 32-bit
GDT[0x04]=Data segment, laddr=00000000, limit=fffff * 4Kbytes, Read/Write
Code: Select all
cr3: 0x0010c000
0x00000000-0x0018ffff -> 0x00000000-0x0018ffff
0xc0000000-0xc0ffffff -> 0x00190000-0x0118ffff
Code: Select all
(0).[3097666632] [0x00101b1d] 0008:00102b1d (unk. ctxt): add eax, 0x00000001 ; 83c001
Next at t=3097666633
(0) [0xfffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5be000f0
Thanks.