Hiho zusammen...
Irgendwie bin ich da wieder mal am anschlag... Sobald ich ein Interrupt aufruffe im PMode kommt ein Fehler von Bochs: prefetch: running in bogus memory...
ich habe mir da gedacht das das am wahrscheindlichsten an gdt oder am linkerscript liegt...
gdt_START:
	
		gdt_NULL:
			dd 0
			dd 0
		
		gdt_CODE:
			dw 0xFFFF							; Segmentgrösse
			dw 0x0								; Segmentbasisadresse
			db 0x1								; Segmentbasisadresse
			db 10011010b						; [1]=present,[00]=Level0,[1]=segment,[101]=type,[0]=busy flag
			db 11001111b						; Zusatz
			db 0x0								; Segmentbasisadresse
		
		gdt_DATA:
			dw 0xFFFF
			dw 0x0
			db 0x0
			db 10010010b						; [1]=present,[00]=level0,[1]=segment,[001]=type,[0]=busy flag
			db 11001111b
			db 0x0
		
	gdt_END:
	
	gdt_DESC:
		limit 	dw gdt_END - gdt_START - 1
		base 	dd gdt_START + 0x10000
da wundere ich mich warum beim cs ein 0x01 beim segmentbasisadresse ist aber beim ds selektor 0x00.. ändere ich es, dann funtzt es net mer..
und hier das linkerscript:
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
  .text 0x10200 : {
    *(.text)
  }
  .data : {
    *(.data)
  }
  .bss :  { 					
    *(.bss)
  }
}
der c-kernel liegt an position 0x10200 und der asm teil mit gdt an pos 0x10000
kann ich irgendwie testen ob der idt korrekt geladen wurde? bzw. ob dort die richtige adresse vermerkt ist?
brauche dringend hilfe 
thx4help