<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
<BLOCKQUOTE>Bonsoir à tous,<BR> <BR>Je suis arrivé jusqu'à l'article 4 qui traite de la mise en place de la pagination,<BR>et je m'adresse à vous car j'ai un problème à l'exécution. Bochs dans ses logs me renvoit ceci<BR>tout en rebootant en boucle la machine virtuelle:<BR> <BR>/**************************************************/<BR>Message in a bochs<BR>00016359077e[CPU0 ] interrupt(): not accessable or not code segment cs=0x0008<BR>00016359077e[CPU0 ] interrupt(): not accessable or not code segment cs=0x0008<BR>00016359077i[CPU0 ] CPU is in protected mode (active)<BR>00016359077i[CPU0 ] CS.d_b = 32 bit<BR>00016359077i[CPU0 ] SS.d_b = 32 bit<BR>00016359077i[CPU0 ] EFER = 0x00000000<BR>00016359077i[CPU0 ] | RAX=0000000000000000 RBX=000000000002d8e4<BR>00016359077i[CPU0 ] | RCX=0000000000000001 RDX=0000000000000002<BR>00016359077i[CPU0 ] | RSP=00000000002044ce RBP=0000000000204504<BR>00016359077i[CPU0 ] | RSI=000000000005453a RDI=000000000005453b<BR>00016359077i[CPU0 ] | R8=0000000000000000 R9=0000000000000000<BR>00016359077i[CPU0 ] | R10=0000000000000000 R11=0000000000000000<BR>00016359077i[CPU0 ] | R12=0000000000000000 R13=0000000000000000<BR>00016359077i[CPU0 ] | R14=0000000000000000 R15=0000000000000000<BR>00016359077i[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf cf<BR>00016359077i[CPU0 ] | SEG selector base limit G D<BR>00016359077i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D<BR>00016359077i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 000fffff 1 1<BR>00016359077i[CPU0 ] | MSR_FS_BASE:0000000000000000<BR>00016359077i[CPU0 ] | MSR_GS_BASE:0000000000000000<BR>00016359077i[CPU0 ] | RIP=0000000000202337 (0000000000202337)<BR>00016359077i[CPU0 ] | CR0=0x80010011 CR1=0x0 CR2=0x0000000000000000<BR>00016359077i[CPU0 ] | CR3=0x01fef000 CR4=0x00000000<BR>00016359077i[CPU0 ] >> add byte ptr ds:[eax], al : 0000<BR>00016359077e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting<BR>00016359077i[SYS ] bx_pc_system_c::Reset(SOFTWARE) called<BR>00016359077i[CPU0 ] cpu software reset<BR>/***************************************************/<BR> <BR>Ce qu'il faut savoir c'est que j'ai réécris les fichiers exception_wrappers.S et<BR>irq_wrappers.S [ainsi que boot.S (mais je pense qu'il n'a pas d'incidence ici)]<BR>pour qu'ils puissent être compilés avec nasm.<BR> <BR>Sinon après avoir expérimenté un peu les choses, l'erreur provient je pense de cette portion<BR>de code suivante qui se situe dans sos/main.c dans la fonction test_paging:<BR> <BR> sos_paging_map(ppage_new, vpage_code,<BR> FALSE,<BR> SOS_VM_MAP_ATOMIC<BR> | SOS_VM_MAP_PROT_READ<BR> | SOS_VM_MAP_PROT_WRITE);<BR> <BR>en essayant de changer les paramètres envoyés à cette fonction je me suis aperçu que c'est le mapping de la<BR>page de code actuelle (vpage_code) qui doit déclencher une faute, qui en redéclenche une autre<BR>jusqu'à avoir une faute triple. Et d'après le numéro la ligne de log<BR>"00016359077e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting"<BR>je pense que l'erreur viendrait d'un #GP (general protection).<BR> <BR>Par contre je n'en sais pas plus et j'avoue être un peu perdu, si des personnes voient d'où l'erreur peut<BR>provenir, ou il faut que je reagarde, je veux bien de l'aide.<BR> <BR>D'avance merci.</BLOCKQUOTE><br /><hr />Tous vos amis discutent sur Messenger, et vous ? <a href='http://www.windowslive.fr/messenger/' target='_new'>Téléchargez Messenger, c'est gratuit !</a></body>
</html>