^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* ITLB ** ICACHE line 1: Context 0 check and TSB load */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ldxa [%g0] ASI_IMMU_TSB_8KB_PTR, %g1 ! Get TSB 8K pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ldxa [%g0] ASI_IMMU, %g6 ! Get TAG TARGET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) srlx %g6, 48, %g5 ! Get context
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) sllx %g6, 22, %g6 ! Zero out context
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) brz,pn %g5, kvmap_itlb ! Context 0 processing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) srlx %g6, 22, %g6 ! Delay slot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) TSB_LOAD_QUAD(%g1, %g4) ! Load TSB entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) cmp %g4, %g6 ! Compare TAG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) /* ITLB ** ICACHE line 2: TSB compare and TLB load */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) bne,pn %xcc, tsb_miss_itlb ! Miss
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) mov FAULT_CODE_ITLB, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) sethi %hi(_PAGE_EXEC_4U), %g4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) andcc %g5, %g4, %g0 ! Executable?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) be,pn %xcc, tsb_do_fault
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) nop ! Delay slot, fill me
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) stxa %g5, [%g0] ASI_ITLB_DATA_IN ! Load TLB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) retry ! Trap done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /* ITLB ** ICACHE line 3: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) /* ITLB ** ICACHE line 4: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) nop