[OSy] Adresa pri Address Error Exception
Petr Tuma
petr.tuma at dsrg.mff.cuni.cz
Sun Jan 6 13:39:48 CET 2008
Dobry den,
koukanim do zdrojaku msimu mi prijde, ze se tam v nekterych situacich
nemusi badvaddr nastavit, tohle vypada na jednu z nich. Myslim si, ze to
je chyba msimu, ale jeste bych radeji pockal na vyjadreni primo jeho
autoru (zatim si muzete zkusit do convert_addr_user v processor.c
dovnitr toho if pridat "cp0_badvaddr = addr" pred ten return
excAddrError (plus slozene zavorky), jestli se to zacne chovat dle
ocekavani).
Petr Tuma
Jakub Klímek wrote:
> Dobry den.
> Mam takovy dotaz... v testu uspace2 se pristupuje na adresu 0x80001000, ale do registru BadVAddr se zapise něco jineho, například 0x109ff8.
>
> Tady je kus souvislého instruction dumpu.
>
> 00002364 lui v0, 0x8000 # 0x8000=32768, v0: 0x27->0x80000000
> 00002368 ori v0, v0, 0x1000 # 0x1000h=4096, v0: 0x80000000->0x80001000
> 0000236C addiu v1, 0, 0xa # 0xa=10, v1: 0x27->0xa
> 00002370 lw ra, 0x10(sp) # 0x10=16, ra: 0x2364->0x7ec
> 00002374 sw v1, (v0) # 0x0=0
>
> Raised exception: Address error (store)
>
> 80000180 j +0x1218 # 0x1218=4632, cp0_status: 0x0000ff11->0x0000ff13, cp0_cause: 0x00000020->0x00000014, cp0_epc: 0x00002420->0x00002374
> 80000184 nop
> 80001218 lui k1, 0x8000 # 0x8000=32768, k1: 0x80000200->0x80000000
> 8000121C ori k1, k1, 0x0200 # 0x200h=512, k1: 0x80000000->0x80000200
> 80001220 mfc0 k0, epc # k0: 0xff13->0x2374
> 80001224 sw k0, (k1) # 0x0=0
> 80001228 mfc0 k0, cause # k0: 0x2374->0x14
> 8000122C sw k0, 0x4(k1) # 0x4=4
> 80001230 mfc0 k0, badvaddr # k0: 0x14->0x109ff8
>
> Zacina, když USPACE2 nahraje spravne adresu 0x80001000, pak hodnotu kterou chce zapsat 0xa a poslední instrukci to zapise,
> Coz spravne vyvola vyjimku, ale jak je videt na poslednim radku, v badvaddr je 0x109ff8.
>
> Je to v poradku? V cem muze byt problem?
>
> V manualu je:
>
> When this exception occurs, the BadVAddr register retains the virtual
> address that was not properly aligned or that referenced protected
> address space, coz by podle me mělo byt to 0x80001000.
>
> Jakub Klímek
>
>
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
--
Petr Tuma
Distributed Systems Research Group
Department of Software Engineering
Faculty of Mathematics and Physics
Charles University, Czech Republic
http://dsrg.mff.cuni.cz/~ceres
More information about the NSWI004
mailing list