[OSy] Adresa pri Address Error Exception

Jakub Klímek jakub.klimek at volny.cz
Sun Jan 6 11:29:21 CET 2008


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






More information about the NSWI004 mailing list