[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