On Fri, 08 Sep 2006 18:39:08 +0100, Nigel Stephens <nigel@xxxxxxxx> wrote: > > I asked on GCC bugzilla a few days ago but can not got feedback yet. > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28126 > > > > In spite of the GCC issue, is this patch now at the point where it could > be applied, or at least queued? GCC 4.2 does not put RDHWR in delay slot now. Also, there is a "hackish fix" to prevent gcc move a RDHWR outside of a conditional (from Richard Sandiford). For kernel side, my patch can be still applied to current git tree as is. But I'm still looking for better solution (silver bullet?) for cpu_has_vtag_icache case. How about something like this (and do not touch tlbex.c)? LEAF(handle_ri_rdhwr_vivt) .set push .set noat .set noreorder /* check if TLB contains a entry for EPC */ MFC0 K1, CP0_ENTRYHI andi k1, ASID_MASK MFC0 k0, CP0_EPC andi k0, PAGE_MASK << 1 or k1, k0 MTC0 k1, CP0_ENTRYHI tlbp mfc0 k1, CP0_INDEX bltz k1, handle_ri /* slow path */ nop /* fall thru */ LEAF(handle_ri_rdhwr) I'm wondering if this could work on CONFIG_MIPS_MT_SMTC case... --- Atsushi Nemoto