[OSy] Ukonceni MSIMu

Jan Záloha jzaloha at centrum.cz
Sun Feb 14 21:58:19 CET 2010


Dobrý večer,
možná mám ten problém, kvůli kterému vzniklo toto martyrium. Na řádkách zápisu do TLB:

                int32_t i = pr->cp0[reg];
		tlb_ent *t = &pr->tlb[i];
		
		if (i > 47)
			mprintf("nTLBWI: Invalid value in Indexn");
		else {
			/* TLB filling */
			//mprintf("nTLBWI: index %dn", i);
			t->mask = 0xffffe000 & ~cp0_pagemask;

chápu-li to dobře vyberu na základě hodnoty reg některý z cp0 registrů a jeho hodnotu přiřadím do i. Tím pak zaindexuji tlb bufferu a vyberu jeho položku, ale nikdo mi nezaručí, že i-čko bude v hezkém rozsahu (tj. 0-47, je zajištěno jen, že ičko bude menší než 48), třeba když mi v cp0_index zbyde hodnota 0x80000000 po neúpěšném TLBProbe a tím pádem mohu dostat nesmyslný pointer na t. Možná píšu nyní nesmysly...

Jan Záloha
______________________________________________________________
> Od: "Vlastimil Babka" <babka at dsrg.mff.cuni.cz>
> Komu: Operating Systems Course <osy at dsrg.mff.cuni.cz>
> Datum: 14.02.2010 15:27
> Předmět: Re: [OSy] Ukonceni MSIMu
>
>On 02/13/2010 10:14 PM, Jan Záloha wrote:
>>
>> Tak uz mam i vystup z gdb:
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x000000000040810e in TLBW (pr=0x9cd4e0, reg=0, res=0x7fff0893798c)
>>      at cpu/processor.c:593
>> 593				t->mask = 0xffffe000&  ~cp0_pagemask;
>
>Dobry den,
>
>je to jen strelba od boku, ale tady vidim mozny problem jedine v ukazateli t. Kdyz se podivam na zdrojak funkce TLBW() tak mi prijde, ze se neosetruje stav, kdy je obsah registru cp0_index (interpretovany jako int32) zaporny. Pokud se nepletu, tak je to urcite chyba msimu, kterou bude treba opravit, zatim ale tedy zkuste zkontrolovat, jestli ten registr mate pri zapisu do TLB nastaveny spravne (snad by to slo videt i z te trace?).
>
>S pozdravem,
>Vlastimil Babka
>
>_______________________________________________
>OSy mailing list
>OSy at dsrg.mff.cuni.cz
>https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>




More information about the NSWI004 mailing list