[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