Lines Matching refs:instrs
134 static int do_patch_fixups(long *start, long *end, unsigned int *instrs, int num) in do_patch_fixups() argument
142 if (!is_fixup_addr_valid(dest, sizeof(*instrs) * num)) in do_patch_fixups()
148 patch_instruction(dest + j, ppc_inst(instrs[j])); in do_patch_fixups()
155 static int do_patch_entry_fixups(long *start, long *end, unsigned int *instrs, in do_patch_entry_fixups() argument
163 if (!is_fixup_addr_valid(dest, sizeof(*instrs) * 3)) in do_patch_entry_fixups()
170 patch_instruction(dest, ppc_inst(instrs[0])); in do_patch_entry_fixups()
171 patch_instruction(dest + 2, ppc_inst(instrs[2])); in do_patch_entry_fixups()
174 patch_instruction(dest + 1, ppc_inst(instrs[1])); in do_patch_entry_fixups()
175 patch_instruction(dest + 2, ppc_inst(instrs[2])); in do_patch_entry_fixups()
176 patch_instruction(dest, ppc_inst(instrs[0])); in do_patch_entry_fixups()
184 unsigned int instrs[3]; in do_stf_entry_barrier_fixups() local
191 instrs[0] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
192 instrs[1] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
193 instrs[2] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
197 instrs[i++] = PPC_RAW_MFLR(_R10); in do_stf_entry_barrier_fixups()
198 instrs[i++] = PPC_RAW_NOP(); /* branch patched below */ in do_stf_entry_barrier_fixups()
199 instrs[i++] = PPC_RAW_MTLR(_R10); in do_stf_entry_barrier_fixups()
201 instrs[i++] = PPC_RAW_EIEIO() | 0x02000000; /* eieio + bit 6 hint */ in do_stf_entry_barrier_fixups()
203 instrs[i++] = PPC_RAW_SYNC(); in do_stf_entry_barrier_fixups()
204 instrs[i++] = PPC_RAW_LD(_R10, _R13, 0); in do_stf_entry_barrier_fixups()
205 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_stf_entry_barrier_fixups()
208 i = do_patch_entry_fixups(start, end, instrs, types & STF_BARRIER_FALLBACK, in do_stf_entry_barrier_fixups()
221 unsigned int instrs[6]; in do_stf_exit_barrier_fixups() local
228 instrs[0] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
229 instrs[1] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
230 instrs[2] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
231 instrs[3] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
232 instrs[4] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
233 instrs[5] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
238 instrs[i++] = PPC_RAW_MTSPR(SPRN_HSPRG1, _R13); in do_stf_exit_barrier_fixups()
239 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_HSPRG0); in do_stf_exit_barrier_fixups()
241 instrs[i++] = PPC_RAW_MTSPR(SPRN_SPRG2, _R13); in do_stf_exit_barrier_fixups()
242 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_SPRG1); in do_stf_exit_barrier_fixups()
244 instrs[i++] = PPC_RAW_SYNC(); in do_stf_exit_barrier_fixups()
245 instrs[i++] = PPC_RAW_LD(_R13, _R13, 0); in do_stf_exit_barrier_fixups()
246 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_stf_exit_barrier_fixups()
248 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_HSPRG1); in do_stf_exit_barrier_fixups()
250 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_SPRG2); in do_stf_exit_barrier_fixups()
252 instrs[i++] = PPC_RAW_EIEIO() | 0x02000000; /* eieio + bit 6 hint */ in do_stf_exit_barrier_fixups()
255 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in do_stf_exit_barrier_fixups()
313 unsigned int instrs[4]; in do_uaccess_flush_fixups() local
320 instrs[0] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
321 instrs[1] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
322 instrs[2] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
323 instrs[3] = PPC_RAW_BLR(); in do_uaccess_flush_fixups()
327 instrs[3] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
332 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_uaccess_flush_fixups()
333 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in do_uaccess_flush_fixups()
337 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in do_uaccess_flush_fixups()
339 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in do_uaccess_flush_fixups()
354 unsigned int instrs[3]; in __do_entry_flush_fixups() local
358 instrs[0] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
359 instrs[1] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
360 instrs[2] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
364 instrs[i++] = PPC_RAW_MFLR(_R10); in __do_entry_flush_fixups()
365 instrs[i++] = PPC_RAW_NOP(); /* branch patched below */ in __do_entry_flush_fixups()
366 instrs[i++] = PPC_RAW_MTLR(_R10); in __do_entry_flush_fixups()
370 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in __do_entry_flush_fixups()
371 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in __do_entry_flush_fixups()
375 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in __do_entry_flush_fixups()
404 i = do_patch_entry_fixups(start, end, instrs, types == L1D_FLUSH_FALLBACK, in __do_entry_flush_fixups()
409 i += do_patch_entry_fixups(start, end, instrs, types == L1D_FLUSH_FALLBACK, in __do_entry_flush_fixups()
438 unsigned int instrs[3]; in __do_rfi_flush_fixups() local
445 instrs[0] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
446 instrs[1] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
447 instrs[2] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
451 instrs[0] = PPC_RAW_BRANCH(16); in __do_rfi_flush_fixups()
455 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in __do_rfi_flush_fixups()
456 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in __do_rfi_flush_fixups()
460 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in __do_rfi_flush_fixups()
462 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in __do_rfi_flush_fixups()