[OSy] dorder problem
David Matousek
david at matousec.com
Tue Nov 20 20:46:34 CET 2007
Zdravim,
Mam trosicku problem s dorder device?
Z popisu mi neni jasne, proc se deje nasledujici:
Saham na dorder stejne jako treba na konzolu/klavesnici.
Z popisu jsem myslel, ze kdyz mam na adrese X ten dorder namapovan,
tak ze ctenim ziskam serial number procesoru (funguje),
a navic, kdyz na tuto adresu X zapisu masku treba 0x2
tak ze se na procesoru se serial number 1 objevi dany interrupt (funguje),
ale co se deje ihned po te, mi neni zrejme
Pri prirazeni, coz je neco takoveho:
*((unsigned int volatile *)MP_MEM_REG_ADDRESS)=cpu_mask;
pro dva procesory to vypada nejak nasledovne:
80010C50 nop
80016A3C lui v0, 0xbfc0 # 0xbfc0=49088, v0: 0x1->0xbfc00000
80010C54 j +0x10c50 # 0x10c50=68688
80016A40 ori v0, v0, 0x8018 # 0xffff8018h=32792, v0: 0xbfc00000->0xbfc08018
80010C58 nop
80016A44 jr ra
80010C50 nop
80016A48 sw a0, (v0) # 0x0=0, cp0_cause: 0x00000000->0x00001000
# ^
# toto je presne jak jsem chtel
Raised exception: Interrupt
#az sem to vypada dobre, druhy procesor #1 ma nekonecny loop, procesor #0 priradil do dorder
#ale ted hned pote:
80000180 j +0x33c # 0x33c=828, cp0_status: 0x00001001->0x00001003, cp0_epc: 0x00000000->0x80010c58
80016A48 sw a0, (v0) # 0x0=0
8000033C lui k1, 0xbfc0 # 0xbfc0=49088, k1: 0xbfc08018->0xbfc00000
80016A48 sw a0, (v0) # 0x0=0
80016C54 lw s1, 0x14(sp) # 0x14=20
80016A48 sw a0, (v0) # 0x0=0
80016C54 lw s1, 0x14(sp) # 0x14=20
80016A48 sw a0, (v0) # 0x0=0
80016C54 lw s1, 0x14(sp) # 0x14=20
80000180 je jeste spravne a 8000033C take,
ale jak 80016A48, tak 80016C54, uz spravne nejsou (procesor #0 cykli na prirazovaci instrukci !?
a procesor #1 bez instrukce skoku nebo navratu jentak odskocil na nejakou adresu 80016C54 !?)
Dale by me zajimalo, zda v dokumentaci psana magic konstanta 0x80000000 shazuje interrupt
jen na procesoru, ktery prirazuje, nebo zda shazuje interrupt na vsech procesorech.
Diky,
DM
More information about the NSWI004
mailing list