Lines Matching refs:insn

91 	struct insn_emulation *insn = (struct insn_emulation *)data;  in enable_insn_hw_mode()  local
92 if (insn->ops->set_hw_mode) in enable_insn_hw_mode()
93 insn->ops->set_hw_mode(true); in enable_insn_hw_mode()
98 struct insn_emulation *insn = (struct insn_emulation *)data; in disable_insn_hw_mode() local
99 if (insn->ops->set_hw_mode) in disable_insn_hw_mode()
100 insn->ops->set_hw_mode(false); in disable_insn_hw_mode()
104 static int run_all_cpu_set_hw_mode(struct insn_emulation *insn, bool enable) in run_all_cpu_set_hw_mode() argument
106 if (!insn->ops->set_hw_mode) in run_all_cpu_set_hw_mode()
109 on_each_cpu(enable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
111 on_each_cpu(disable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
125 struct insn_emulation *insn; in run_all_insn_set_hw_mode() local
128 list_for_each_entry(insn, &insn_emulation, node) { in run_all_insn_set_hw_mode()
129 bool enable = (insn->current_mode == INSN_HW); in run_all_insn_set_hw_mode()
130 if (insn->ops->set_hw_mode && insn->ops->set_hw_mode(enable)) { in run_all_insn_set_hw_mode()
132 cpu, insn->ops->name); in run_all_insn_set_hw_mode()
140 static int update_insn_emulation_mode(struct insn_emulation *insn, in update_insn_emulation_mode() argument
149 remove_emulation_hooks(insn->ops); in update_insn_emulation_mode()
152 if (!run_all_cpu_set_hw_mode(insn, false)) in update_insn_emulation_mode()
153 pr_notice("Disabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
157 switch (insn->current_mode) { in update_insn_emulation_mode()
161 register_emulation_hooks(insn->ops); in update_insn_emulation_mode()
164 ret = run_all_cpu_set_hw_mode(insn, true); in update_insn_emulation_mode()
166 pr_notice("Enabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
176 struct insn_emulation *insn; in register_insn_emulation() local
178 insn = kzalloc(sizeof(*insn), GFP_KERNEL); in register_insn_emulation()
179 insn->ops = ops; in register_insn_emulation()
180 insn->min = INSN_UNDEF; in register_insn_emulation()
184 insn->current_mode = INSN_EMULATE; in register_insn_emulation()
186 run_all_cpu_set_hw_mode(insn, false); in register_insn_emulation()
187 insn->max = INSN_HW; in register_insn_emulation()
190 insn->current_mode = INSN_UNDEF; in register_insn_emulation()
191 insn->max = INSN_EMULATE; in register_insn_emulation()
196 list_add(&insn->node, &insn_emulation); in register_insn_emulation()
201 update_insn_emulation_mode(insn, INSN_UNDEF); in register_insn_emulation()
209 struct insn_emulation *insn = (struct insn_emulation *) table->data; in emulation_proc_handler() local
210 enum insn_emulation_mode prev_mode = insn->current_mode; in emulation_proc_handler()
212 table->data = &insn->current_mode; in emulation_proc_handler()
215 if (ret || !write || prev_mode == insn->current_mode) in emulation_proc_handler()
218 ret = update_insn_emulation_mode(insn, prev_mode); in emulation_proc_handler()
221 insn->current_mode = prev_mode; in emulation_proc_handler()
222 update_insn_emulation_mode(insn, INSN_UNDEF); in emulation_proc_handler()
225 table->data = insn; in emulation_proc_handler()
241 struct insn_emulation *insn; in register_insn_emulation_sysctl() local
248 list_for_each_entry(insn, &insn_emulation, node) { in register_insn_emulation_sysctl()
254 sysctl->procname = insn->ops->name; in register_insn_emulation_sysctl()
255 sysctl->data = insn; in register_insn_emulation_sysctl()
256 sysctl->extra1 = &insn->min; in register_insn_emulation_sysctl()
257 sysctl->extra2 = &insn->max; in register_insn_emulation_sysctl()
567 char *insn; in compat_setend_handler() local
572 insn = "setend be"; in compat_setend_handler()
575 insn = "setend le"; in compat_setend_handler()
579 trace_instruction_emulation(insn, regs->pc); in compat_setend_handler()