[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