John S. Worley wrote on Wednesday, March 01, 2006 11:29 AM > Have you tried explicit bundling? I wouldn't rely on > the assembler to bundle critical code like this, and the > performance is worth the extra effort. I suppose so. And just realize that it might be because of gcc assembler bent backwards for sloppy kernel developer. If we follow the software developer manual to the teeth, the code in vhpt_miss isn't strictly correct: (p10) itc.i r18 // insert the instruction TLB entry (p11) itc.d r18 // insert the data TLB entry (p6) br.cond.spnt.many page_fault // handle bad address/page not present (page fault) It misses stop bits in the source for both itc instructions. And gas silently fixed up the bug and forced stop bit right before insn, except it wasn't doing a good job at collapsing multiple stop. Manually adding stop bits to it produces desired bundling. Even though p10 and p11 are mutually exclusive, there are no m-m-stop-i bundle template and itc can be only issued to one of the 4 memory port, so adding a stop bit in between won't matter anyway. HJ, nevermind, I think we are OK. - Ken - : send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |