[OSy] problem pri testu malloc1

Jiri Tousek jiri.tousek at gmail.com
Tue Dec 5 21:45:09 CET 2006


Omlouvam se, to jsem se spatne vyjadril, tech zmen druheho typu bylo
vic, ale zdaly byt na stejnem principu, proto jsem se zminil jen o
jedne.

Jiri Tousek

P.S. Vypadato, ze nam prave prosly tesy juchu!

On 12/5/06, Jiří Tlach <jiri.tlach at centrum.cz> wrote:
> Dobry vecer,
>
> takze abych vse uvedl na pravou miru, pokusim se nyni vysvetlit, cim byly
> motivovany zmeny v kstack.S, ktere jsem provedl.
>
> Pred dvema dny posilal do teto konference Jirka Tousek nasledujici log tykajici
> se pruchodu funkci kstack_alloc v kstack.S:
>
>     80002364    xor   k0, k0, k0        # k0: 0x8001a1b0->0x0
>     80002368    lui   k0, 0x8001        # 0x8001=32769, k0: 0x0->0x80010000
>     8000236C    ori   k0, k0, 0xa1b0    # 0xffffa1b0h=41392,
>                                                           # k0: 0x80010000->0x8001a1b0
>     80002370    lw    k1, (k0)          # 0x0=0
>
> Jedna se o kod, ktery ma za ukol nacist hodnotu promenne kernel_level
> do registru k1. Adresa kernel_level, kterou lze z tohoto logu vycist je
> 0x8001a1b0. Hned za timto logem Jirka uvadel, ze adresa symbolu
> kernel_end je 0x8000c624. Pak jedine logicke vysvetleni, proc symbol
> kernel_level lezi nad symbolem kernel_end, je podle me to, ze linker
> proste pridelil promenne kernel_level "spatnou" adresu nebo jsem mel
> chybu nekde v tech instrunkcich, ktere kernel_level nacitaji (to jsou
> ty instrukce z logu vyse).
>
> Proto jsem se rozhodl inspirovat assemblerovym vystupem gcc
> prekladace a napsat definici kernel_level promenne tak, jak by
> ji napsalo gcc. Analogicky postup jsem aplikoval i na nacitani a
> ukladani hodnoty promenne kernel_level. Timto zpusobem
> tedy vznikly zmeny v kstack.S.
>
>
> >Jenom tahle zmena. bez upravy dalsich instrukci, predevsim
> >
> >sw        $k1, 0($k0)
> >
> >zpusobi, ze se hodnota nezapise na adresu kernel_level, ale na adresu
> 0x8000000, coz teda mozna vyresi Vas problem s memory managementem, ale ke
> skutecne pricine problemu tak nejsme ani o krok bliz. Takze nevime :)
> >
>
> Pokud se tyka zpetneho zapisovani hodnoty do kernel_level, tak Jirka
> neuvedl v tom predchazejicim mailu jeste jednu zmenu tykajici se kstack.S.
> A to sice ze
>
>   sw  $k1, 0($k0)
>
> je nahrazeno za
>
>   sw  $k1, %lo(kernel_level)($k0)
>
> Takze se bude opravdu zapisovat na adresu promenne kernel_level (kdyz
> v k0 registru mame ulozeno hornich 16 bitu jeji adresy).
>
> S pozdravem
> Jiri Tlach
>
> _______________________________________________
> OSy mailing list
> OSy at nenya.ms.mff.cuni.cz
> http://nenya.ms.mff.cuni.cz/mailman/listinfo/osy
>


More information about the NSWI004 mailing list