Witam.
Mam taki problem.
Uruchamiam w PMode kod, który restartuje komputer:
#include <x86.h>
void reboot(void) //Reboot computer
{
int temp;
do
{
temp = inportb( 0x64 );
if ( temp & 1 )
inportb( 0x60 );
}
while ( temp & 2 );
outportb(0x64, 0xFE);
}
int main(long argc, char ** argv)
{
reboot();
for(;;);
return 0;
}
Kod ten zapisuje do różnych portów. Teraz moje pytanie: Dlaczego nie dostaję przerwania błędu jeżeli program ten pracuje w DPL3 z rejestrem eflags ostawionym na: 0x3202. Wg. dokumentacji intela nie powinien on mieć dostępu do portów WE/WY :/ Więc czemu kod się wykonuje i komputer sie resetuje :>
Pozdrawiam :)