Autor Thema: IDT mit einem Upper-Half-Kernel  (Gelesen 7256 mal)

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« am: 18. December 2011, 11:14 »
Hallo zusammen,

ich habe einen Upper-Half-Kernel und versuche gerade die IDt zu initialisieren.
Ich habe haeufiger gelesen, dass in der IDTR die physischen Adresse der IDT stehen muss. Da hab ich nur das Problem, dass ich bei der Behandlung einer Exception einen PageFault bekomme, der auf die Position der IDT zeigt.
Wenn die IDT an einer virtuellen Adresse liegt, bekomme ich bei einer Exceptionen eine GPF.
Die Exception erzeuge ich mit 1 / 0. Dafuer ist auch ein Handler registiert, der aktiv ist und auf eine virtuelle Adresse zeigt.
Somit muesste die Exception behandelt werden. Kann das Problem auch an der GDT liegen?
Die wird ueber ihre physische Adresse identifiziert.

Die Handler-Adressen in der IDT muessen die virtuellen Adressen enthalten, oder?

Gruss,
Sven

EDIT:
Bochs gibt folgende Fehlermeldung:
bx_dbg_read_linear: physical memory read error (phy=0x00000000c0000dea, lin=0xc0000dea)
« Letzte Änderung: 18. December 2011, 11:18 von rizor »
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 18. December 2011, 12:54 »
Sowohl lgdt als auch lidt brauchen die lineare Adresse, würde ich vermuten, ohne es nachgeschlagen zu haben (was bei Flat Memory das gleiche wie die virtuelle Adresse ist).

Anhand der bochs-Fehlermeldung würde ich sagen, dein Paging ist falsch initialisiert, wenn linear 0xc0000dea identisch auf 0xc0000dea physisch gemappt ist.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. December 2011, 13:21 »
Wenn ich mir mal den TLB in QEmu anschaue, passt das alles.
Da ist Paging richtig initialisiert.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 18. December 2011, 15:43 »
Hier mal der Log von QEmu:

SMM: enter
EAX=00000001 EBX=07fe0cb0 ECX=00000000 EDX=00000cfc
ESI=000f27cd EDI=0003802d EBP=07fe0ad0 ESP=00006f3c
EIP=000f3766 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fcd80 00000037
IDT=     000fdb70 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=000f27a0 CCD=00000001 CCO=LOGICB 
EFER=0000000000000000
SMM: after RSM
EAX=00000001 EBX=07fe0cb0 ECX=00000000 EDX=00000cfc
ESI=000f27cd EDI=0003802d EBP=07fe0ad0 ESP=00006f3c
EIP=000f3766 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fcd80 00000037
IDT=     000fdb70 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=EFLAGS 
EFER=0000000000000000
check_exception old: 0xffffffff new 0x0
     0: v=00 e=0000 i=0 cpl=0 IP=0008:00000000001017ac pc=00000000001017ac SP=0010:00000000c0003a2c EAX=0000000000000001
EAX=00000001 EBX=00009500 ECX=00000007 EDX=00000000
ESI=00000000 EDI=00108000 EBP=c0003a58 ESP=c0003a2c
EIP=001017ac EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000000 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=ADDL   
EFER=0000000000000000
check_exception old: 0x0 new 0xd
     1: v=08 e=0000 i=0 cpl=0 IP=0008:00000000001017ac pc=00000000001017ac SP=0010:00000000c0003a2c EAX=0000000000000001
EAX=00000001 EBX=00009500 ECX=00000007 EDX=00000000
ESI=00000000 EDI=00108000 EBP=c0003a58 ESP=c0003a2c
EIP=001017ac EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000000 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=ADDL   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     2: v=0d e=8000 i=0 cpl=0 IP=0008:00000000c0000d65 pc=00000000c0000d65 SP=0010:00000000c0003a00 EAX=0000000000108000
EAX=00108000 EBX=00000000 ECX=c00039e8 EDX=00000007
ESI=c0003a58 EDI=00000000 EBP=00009500 ESP=c0003a00
EIP=c0000d65 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000000 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=LOGICL 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xe
     3: v=0e e=0000 i=0 cpl=0 IP=0008:00000000c0000d72 pc=00000000c0000d72 SP=0010:00000000c00039f0 CR2=0000000000000d60
EAX=00000010 EBX=00000007 ECX=c00039c0 EDX=c00039e8
ESI=00009500 EDI=c0003a58 EBP=00000000 ESP=c00039f0
EIP=c0000d72 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0000 00000000 00000000 00000000
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000d60 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000008 CCD=c00039f0 CCO=ADDL   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     4: v=0d e=3a58 i=0 cpl=0 IP=0008:00000000c0000d65 pc=00000000c0000d65 SP=0010:00000000c00039c8 EAX=00000000c0003a58
EAX=c0003a58 EBX=c00039e8 ECX=c00039b0 EDX=c00039c0
ESI=00000000 EDI=00009500 EBP=00000007 ESP=c00039c8
EIP=c0000d65 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000d60 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000008 CCD=00000000 CCO=LOGICL 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     5: v=0d e=9500 i=0 cpl=0 IP=0008:00000000c0000d65 pc=00000000c0000d65 SP=0010:00000000c00039a0 EAX=0000000000009500
EAX=00009500 EBX=c00039c0 ECX=c0003988 EDX=c00039b0
ESI=00000007 EDI=00000000 EBP=c00039e8 ESP=c00039a0
EIP=c0000d65 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000d60 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000008 CCD=00000000 CCO=LOGICL 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xe
     6: v=0e e=0000 i=0 cpl=0 IP=0008:00000000c0000d72 pc=00000000c0000d72 SP=0010:00000000c0003990 CR2=0000000000000d60
EAX=00000010 EBX=c00039b0 ECX=c0003960 EDX=c0003988
ESI=c00039e8 EDI=00000007 EBP=c00039c0 ESP=c0003990
EIP=c0000d72 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0000 00000000 00000000 00000000
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000d60 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000008 CCD=c0003990 CCO=ADDL   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xe
     7: v=0e e=0000 i=0 cpl=0 IP=0008:00000000c0000d65 pc=00000000c0000d65 SP=0010:00000000c0003968 CR2=0000000000000000
EAX=00000007 EBX=c0003988 ECX=c0003950 EDX=c0003960
ESI=c00039c0 EDI=c00039e8 EBP=c00039b0 ESP=c0003968
EIP=c0000d65 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000000 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000094 CCD=00000000 CCO=LOGICL 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     8: v=0d e=39e8 i=0 cpl=0 IP=0008:00000000c0000d65 pc=00000000c0000d65 SP=0010:00000000c0003940 EAX=00000000c00039e8
EAX=c00039e8 EBX=c0003960 ECX=c0003928 EDX=c0003950
ESI=c00039b0 EDI=c00039c0 EBP=c0003988 ESP=c0003940
EIP=c0000d65 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     c0003000 00000027
IDT=     c0003028 000007ff
CR0=80000011 CR2=00000000 CR3=00080000 CR4=00000010
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000

Der Trace geht immer so weiter. Habe hier jetzt mal abgebrochen.

Werdet ihr daraus schauer als ich?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 18. December 2011, 16:02 »
Das sind die falschen Abschnitte. Die Registerdumps, die mit SMM überschrieben sind (SMM: enter und SMM: after RSM) gehören zum System Management Mode. Erst danach geht es los.

Es sollte sowas ähnliches wie
     0: v=20 e=0000 i=0 cpl=0 IP=0018:ffffffff800001c7 pc=ffffffff800001c7 SP=0020:ffffffff80006490 EAX=000000000000009edarüber stehen.
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 18. December 2011, 16:09 »
Das ist in dem Ausschnitt auch vorhanden.
Direkt der erste Dump nach dem after RSM.
Oder verstehe ich dich falsch?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 18. December 2011, 16:10 »
Der fettgedruckte ist der richtige:
Zitat
SMM: enter
EAX=00000001 EBX=80000b58 ECX=00000000 EDX=00000cfc
ESI=000e5d6d EDI=0003802d EBP=00000cf8 ESP=00006f00
EIP=000e7ae1 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fce38 00000037
IDT=     000fdcf0 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=000e5d40 CCD=00000001 CCO=LOGICB 
EFER=0000000000000000
SMM: after RSM
EAX=00000001 EBX=80000b58 ECX=00000000 EDX=00000cfc
ESI=000e5d6d EDI=0003802d EBP=00000cf8 ESP=00006f00
EIP=000e7ae1 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fce38 00000037
IDT=     000fdcf0 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=EFLAGS 
EFER=0000000000000000
     0: v=20 e=0000 i=0 cpl=0 IP=0018:ffffffff800001c7 pc=ffffffff800001c7 SP=0020:ffffffff80006490 EAX=000000000000009e
RAX=000000000000009e RBX=000000000010b4b8 RCX=00000000000004b0 RDX=00000000000003d5
RSI=0000000000000004 RDI=00000000000003d5 RBP=ffffffff80006490 RSP=ffffffff80006490
R8 =0000000000000000 R9 =0000000000000000 R10=0000000000000000 R11=0000000000000000
R12=0000000000000000 R13=0000000000000000 R14=0000000000000000 R15=0000000000000000
RIP=ffffffff800001c7 RFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0020 0000000000000000 00000000 00009300 DPL=0 DS16 [-WA]
CS =0018 0000000000000000 00000000 00209800 DPL=0 CS64 [---]
SS =0020 0000000000000000 00000000 00009300 DPL=0 DS16 [-WA]
DS =0020 0000000000000000 00000000 00009300 DPL=0 DS16 [-WA]
FS =0020 0000000000000000 00000000 00009300 DPL=0 DS16 [-WA]
GS =0020 0000000000000000 00000000 00009300 DPL=0 DS16 [-WA]
LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT
TR =0028 ffffffff80006500 00002068 00008900 DPL=0 TSS64-avl
GDT=     ffffffff80003a90 00000047
IDT=     ffffffff800044c0 00000fff
CR0=80000011 CR2=0000000000000000 CR3=000000000010c000 CR4=00000020
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=0000000000000044 CCD=0000000000000000 CCO=EFLAGS 
EFER=0000000000000500
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 18. December 2011, 16:20 »
Ich sehe bei dir nichts fett gedrucktes.
Meinst du einfach die erste Zeile des neuen Dumps, direkt nach after RSM?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 18. December 2011, 16:23 »
Ich meine den dritten Dump. Nichts wo SMM in der Nähe steht ist richtig. Der richtige ist der, der mit 0: v=20 e=0000 i=0 cpl=0 IP=00 anfängt.
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 18. December 2011, 17:26 »
Ja, bei mir ist das korrekt. (0x0 als Exception)
Danach folgt ein GPF, mit einem Error-Code von 0x0.
Also findet die CPU den Handler fuer die 0x0 Exception nicht.
Steht in der IDT aber korrekt drin (virtuelle Adressen, sowohl IDT als auch der ISR).

Muesste doch alles passen, oder?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 18. December 2011, 17:32 »
Zeig bitte mal den kompletten Registerdump her (oder lad gleich das ganze Log auf einem pastebin-Dienst hoch).
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 18. December 2011, 18:04 »
Hier ist der komplette log von qemu.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 18. December 2011, 18:29 »
Da ist gar nichts außer dem SMM-Zeug drin. Das bedeutet, dass gar keine Exception aufgetreten ist.
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 18. December 2011, 18:51 »
Sorry, falscher Log.
Hier ist der Richtige. (etwas gekuerzt, da er 440 kB gross war, hat aber immer wieder die gleiche Exception geworfen)
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

 

Einloggen