Lines Matching refs:instrs

127 static int do_patch_fixups(long *start, long *end, unsigned int *instrs, int num)  in do_patch_fixups()  argument
135 if (!is_fixup_addr_valid(dest, sizeof(*instrs) * num)) in do_patch_fixups()
141 patch_instruction(dest + j, ppc_inst(instrs[j])); in do_patch_fixups()
148 static int do_patch_entry_fixups(long *start, long *end, unsigned int *instrs, in do_patch_entry_fixups() argument
156 if (!is_fixup_addr_valid(dest, sizeof(*instrs) * 3)) in do_patch_entry_fixups()
163 patch_instruction(dest, ppc_inst(instrs[0])); in do_patch_entry_fixups()
164 patch_instruction(dest + 2, ppc_inst(instrs[2])); in do_patch_entry_fixups()
167 patch_instruction(dest + 1, ppc_inst(instrs[1])); in do_patch_entry_fixups()
168 patch_instruction(dest + 2, ppc_inst(instrs[2])); in do_patch_entry_fixups()
169 patch_instruction(dest, ppc_inst(instrs[0])); in do_patch_entry_fixups()
177 unsigned int instrs[3]; in do_stf_entry_barrier_fixups() local
184 instrs[0] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
185 instrs[1] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
186 instrs[2] = PPC_RAW_NOP(); in do_stf_entry_barrier_fixups()
190 instrs[i++] = PPC_RAW_MFLR(_R10); in do_stf_entry_barrier_fixups()
191 instrs[i++] = PPC_RAW_NOP(); /* branch patched below */ in do_stf_entry_barrier_fixups()
192 instrs[i++] = PPC_RAW_MTLR(_R10); in do_stf_entry_barrier_fixups()
194 instrs[i++] = PPC_RAW_EIEIO() | 0x02000000; /* eieio + bit 6 hint */ in do_stf_entry_barrier_fixups()
196 instrs[i++] = PPC_RAW_SYNC(); in do_stf_entry_barrier_fixups()
197 instrs[i++] = PPC_RAW_LD(_R10, _R13, 0); in do_stf_entry_barrier_fixups()
198 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_stf_entry_barrier_fixups()
201 i = do_patch_entry_fixups(start, end, instrs, types & STF_BARRIER_FALLBACK, in do_stf_entry_barrier_fixups()
214 unsigned int instrs[6]; in do_stf_exit_barrier_fixups() local
221 instrs[0] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
222 instrs[1] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
223 instrs[2] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
224 instrs[3] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
225 instrs[4] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
226 instrs[5] = PPC_RAW_NOP(); in do_stf_exit_barrier_fixups()
231 instrs[i++] = PPC_RAW_MTSPR(SPRN_HSPRG1, _R13); in do_stf_exit_barrier_fixups()
232 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_HSPRG0); in do_stf_exit_barrier_fixups()
234 instrs[i++] = PPC_RAW_MTSPR(SPRN_SPRG2, _R13); in do_stf_exit_barrier_fixups()
235 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_SPRG1); in do_stf_exit_barrier_fixups()
237 instrs[i++] = PPC_RAW_SYNC(); in do_stf_exit_barrier_fixups()
238 instrs[i++] = PPC_RAW_LD(_R13, _R13, 0); in do_stf_exit_barrier_fixups()
239 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_stf_exit_barrier_fixups()
241 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_HSPRG1); in do_stf_exit_barrier_fixups()
243 instrs[i++] = PPC_RAW_MFSPR(_R13, SPRN_SPRG2); in do_stf_exit_barrier_fixups()
245 instrs[i++] = PPC_RAW_EIEIO() | 0x02000000; /* eieio + bit 6 hint */ in do_stf_exit_barrier_fixups()
248 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in do_stf_exit_barrier_fixups()
306 unsigned int instrs[4]; in do_uaccess_flush_fixups() local
313 instrs[0] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
314 instrs[1] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
315 instrs[2] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
316 instrs[3] = PPC_RAW_BLR(); in do_uaccess_flush_fixups()
320 instrs[3] = PPC_RAW_NOP(); in do_uaccess_flush_fixups()
325 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in do_uaccess_flush_fixups()
326 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in do_uaccess_flush_fixups()
330 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in do_uaccess_flush_fixups()
332 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in do_uaccess_flush_fixups()
347 unsigned int instrs[3]; in __do_entry_flush_fixups() local
351 instrs[0] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
352 instrs[1] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
353 instrs[2] = PPC_RAW_NOP(); in __do_entry_flush_fixups()
357 instrs[i++] = PPC_RAW_MFLR(_R10); in __do_entry_flush_fixups()
358 instrs[i++] = PPC_RAW_NOP(); /* branch patched below */ in __do_entry_flush_fixups()
359 instrs[i++] = PPC_RAW_MTLR(_R10); in __do_entry_flush_fixups()
363 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in __do_entry_flush_fixups()
364 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in __do_entry_flush_fixups()
368 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in __do_entry_flush_fixups()
397 i = do_patch_entry_fixups(start, end, instrs, types == L1D_FLUSH_FALLBACK, in __do_entry_flush_fixups()
402 i += do_patch_entry_fixups(start, end, instrs, types == L1D_FLUSH_FALLBACK, in __do_entry_flush_fixups()
431 unsigned int instrs[3]; in __do_rfi_flush_fixups() local
438 instrs[0] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
439 instrs[1] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
440 instrs[2] = PPC_RAW_NOP(); in __do_rfi_flush_fixups()
444 instrs[0] = PPC_RAW_BRANCH(16); in __do_rfi_flush_fixups()
448 instrs[i++] = PPC_RAW_ORI(_R31, _R31, 0); /* speculation barrier */ in __do_rfi_flush_fixups()
449 instrs[i++] = PPC_RAW_ORI(_R30, _R30, 0); /* L1d flush */ in __do_rfi_flush_fixups()
453 instrs[i++] = PPC_RAW_MTSPR(SPRN_TRIG2, _R0); in __do_rfi_flush_fixups()
455 i = do_patch_fixups(start, end, instrs, ARRAY_SIZE(instrs)); in __do_rfi_flush_fixups()