Hello Everybody,

we are teaching a class on Operating Systems at Dartmouth and we came across a 
strange
behavior we can not find an explanation to. I forward here what Sean Smith has 
found so far:

When playing around in class with memory faults and dtrace, we noticed 
something interesting:
the address passed to trap is similar to but not the same as the faulting 
address. 
E.g., if I touch illegal address 0x00113738, we get a trap on 0x001131DE. 
Poking around in the
code reveals:

    
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/sun4u/sys/mmu.h,


      58 #define MMU_TAG_ACCESS          0x30 /* tlb tag access */

     123 /*
     124  * MMU TAG ACCESS register Layout
     125  *
     126  * +-------------------------+------------------+
     127  * | virtual address [63:13] |  context [12:0]  |
     128  * +-------------------------+------------------+
     129  *  63                    13    12              0
     130  */
     131 #define TAGACC_CTX_MASK         0x1FFF
     132 #define TAGACC_SHIFT            13
     133 #define TAGACC_VADDR_MASK       (~TAGACC_CTX_MASK)
     134 #define TAGACC_CTX_LSHIFT       (64 - TAGACC_SHIFT)

All well and code: the strangeness in the low-order part of the trap address 
must be this
"context."
This is confirmed by seeing that sfmmu_tsbmiss_exception is getting called 
before, with a
"tagaccess" arg of 0x001131DE.

However.... 

where's this context of "0x11DE" coming from?   The ASI for this process is 
0x82!

Is anybody familiar with this piece of code ?

Later,
Max & Sean


--
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to