[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