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