Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Thylon

Seiten: [1]
1
Lowlevel-Coding / APM protected mode
« am: 30. March 2010, 13:50 »
Also durch die Specifikation http://www.microsoft.com/whdc/archive/amp_12.mspx zu APM und die Dokumentation der MUltibootstruktur im Wiki(http://lowlevel.brainsware.org/wiki/index.php/Multiboot) habe ich entdeckt, dass man APM auch im Protected Mode nutzen kann.

Danke der HIlfe von bluecode und kwolf im IRC   :) habe ich herausgefunden, dass man 3 Deskriptoren in der GDT richtig anlegen muss:

        gdt_set_descriptor_byte_granularity(5, size_cseg, base_cseg, GDT_SEGMENT | GDT_PRESENT | GDT_CODESEG, 0);
gdt_set_descriptor_byte_granularity(6, size_cseg16, base_cseg16, GDT_SEGMENT | GDT_PRESENT | GDT_CODESEG, 0);
gdt_set_descriptor_byte_granularity(7, size_dseg, base_dseg, GDT_SEGMENT | GDT_PRESENT | GDT_DATASEG, 0);
So lege ich die Benötigten Deskriptoren an, die auch geladen werden.
Trotzdem lässt ein Aufruf von :
asm("mov $0x28,%%ax;mov %%ax,%%cs; xor %%eax,%%eax;movb $0x53, %%ah;movb $0x08, %%al;xor %%ebx,%%ebx;mov 0x0001,%%bx;mov 0x0001,%%cx;call %%cs:%1;jc Fehler;mov $0x01,%0;jmp done;Fehler:;mov $0x02,%0;done:;" :"=a" (ok): "m"(multiboot_struct->mi_apm->offset));
Die virtuelle Maschiene neustarten. :?
Hat jemand noch einen Tipp für mich?

Danke schon im Vorraus.

Gruß
Thylôn


Edit
der Fehler hat sich erledigt.
Jetzt wird die APM-Funktion (hoffentlich) aufgerufen:

asm("call apm": : "a"(multiboot_struct->mi_apm->offset));
Die APM-Funktion mach folgendes:

apm:
pusha
mov edx,eax
xor eax,eax
mov ah,0x53
mov al,0x08
xor ebx,ebx
mov bx,0x0001
mov cx,bx
;call 0x28:[edx]
push dword cs
push dword after
push dword 0x28
push dword edx
                retf
after:

popa
ret

Jetzt gibt es eine Expection. Unter Bochs ein #GP und unter qemu ein #UD
Meine Frage mache ich sichtbar etwas falsch? :?

Unter bochs nach dem "far call" http://pastebin.com/JJjyBv3q

Gruß Thylôn
Seiten: [1]

Einloggen