Date: Sat, 11 Mar 2006 21:30:53 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 93168 for review Message-ID: <200603112130.k2BLUrHR039590@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93168 Change 93168 by kmacy@kmacy_storage:sun4v_work on 2006/03/11 21:30:20 pass explicit trap type to tsb miss handler Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#27 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#27 (text+ko) ==== @@ -276,7 +276,7 @@ ldxa [%g1 + %g2]ASI_REAL, %g4 ldxa [%g1 + %g3]ASI_REAL, %g5 ba,pt %xcc, tsb_miss_handler - mov VTD_REF, %g3 + mov T_INSTRUCTION_MISS, %g3 .align 32 .endm @@ -294,7 +294,7 @@ ldxa [%g1 + %g2]ASI_REAL, %g4 ldxa [%g1 + %g3]ASI_REAL, %g5 ba,pt %xcc, tsb_miss_handler - mov VTD_REF, %g3 + mov T_DATA_MISS, %g3 .align 32 .endm @@ -304,7 +304,7 @@ mov MMFSA_D_CTX, %g7 ldxa [%g1 + %g3]ASI_REAL, %g5 ba,pt %xcc, tsb_miss_handler - mov VTD_W, %g3 + mov T_DATA_PROTECTION, %g3 .align 32 .endm @@ -1399,9 +1399,9 @@ #endif 16: #endif + mov %g3, %g2 ! save fault type srlx %g6, TTARGET_CTX_SHIFT, %g4 ! recover context sethi %hi(trap), %g1 - mov T_DATA_MISS, %g2 or %g4, %g7, %g3 mov -1, %g4 ba %xcc, tl0_trap @@ -1418,18 +1418,22 @@ sethi %hi(PAGE_SIZE), %g7 sub %g7, 1, %g7 ! %g7==PAGE_MASK - andcc %g5, %g3, %g0 ! already set - bnz,pt %xcc, 7f + cmp %g3, T_DATA_MISS ! TSB data miss + be,pt %xcc, 6f + or %g5, VTD_REF, %g5 ! set referenced unconditionally + cmp %g3, T_INSTRUCTION_MISS ! TSB instruction miss + be,pt %xcc, 6f + nop + cmp %g3, T_DATA_PROTECTION ! protection fault + bne,pn %xcc, unsupported_fault_trap ! we don't handle any other fault types currently nop - andcc %g3, VTD_REF, %g0 ! TSB miss - bnz,pt %xcc, 6f - or %g5, %g3, %g5 ! add ref/mod bit unconditionally andcc %g5, VTD_SW_W, %g0 ! write enabled? bz,pn %xcc, prot_fault_trap ! write to read only page - or %g5, %g3, %g5 ! add ref/mod bit unconditionally + nop + or %g5, VTD_W, %g5 ! add modifed bit 6: - stx %g5, [%g2 + 8] ! set ref/mod bit -7: + stx %g5, [%g2 + 8] ! update TTE + andcc %g6, %g7, %g0 ! kernel context? bz,pn %xcc, 8f nop @@ -1465,7 +1469,7 @@ ! XXX the following intstruction should be replaced with a ! retry on HVs that do auto-demap ontario_demap_errata_patch: - andcc %g5, VTD_W, %g0 + andcc %g5, VTD_W, %g0 ! if write-enabled we know it was a prot fault bnz,pn %xcc, demap_begin nop retry @@ -1494,6 +1498,12 @@ ENTRY(prot_fault_trap) MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT END(prot_fault_trap) +/* + * Programming error + */ +ENTRY(unsupported_fault_trap) + MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT +END(unsupported_fault_trap) /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603112130.k2BLUrHR039590>