Lines Matching refs:insn
94 struct insn_emulation *insn = (struct insn_emulation *)data; in enable_insn_hw_mode() local
95 if (insn->ops->set_hw_mode) in enable_insn_hw_mode()
96 insn->ops->set_hw_mode(true); in enable_insn_hw_mode()
101 struct insn_emulation *insn = (struct insn_emulation *)data; in disable_insn_hw_mode() local
102 if (insn->ops->set_hw_mode) in disable_insn_hw_mode()
103 insn->ops->set_hw_mode(false); in disable_insn_hw_mode()
107 static int run_all_cpu_set_hw_mode(struct insn_emulation *insn, bool enable) in run_all_cpu_set_hw_mode() argument
109 if (!insn->ops->set_hw_mode) in run_all_cpu_set_hw_mode()
112 on_each_cpu(enable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
114 on_each_cpu(disable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
128 struct insn_emulation *insn; in run_all_insn_set_hw_mode() local
131 list_for_each_entry(insn, &insn_emulation, node) { in run_all_insn_set_hw_mode()
132 bool enable = (insn->current_mode == INSN_HW); in run_all_insn_set_hw_mode()
133 if (insn->ops->set_hw_mode && insn->ops->set_hw_mode(enable)) { in run_all_insn_set_hw_mode()
135 cpu, insn->ops->name); in run_all_insn_set_hw_mode()
143 static int update_insn_emulation_mode(struct insn_emulation *insn, in update_insn_emulation_mode() argument
152 remove_emulation_hooks(insn->ops); in update_insn_emulation_mode()
155 if (!run_all_cpu_set_hw_mode(insn, false)) in update_insn_emulation_mode()
156 pr_notice("Disabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
160 switch (insn->current_mode) { in update_insn_emulation_mode()
164 register_emulation_hooks(insn->ops); in update_insn_emulation_mode()
167 ret = run_all_cpu_set_hw_mode(insn, true); in update_insn_emulation_mode()
169 pr_notice("Enabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
179 struct insn_emulation *insn; in register_insn_emulation() local
181 insn = kzalloc(sizeof(*insn), GFP_KERNEL); in register_insn_emulation()
182 insn->ops = ops; in register_insn_emulation()
183 insn->min = INSN_UNDEF; in register_insn_emulation()
187 insn->current_mode = INSN_EMULATE; in register_insn_emulation()
189 run_all_cpu_set_hw_mode(insn, false); in register_insn_emulation()
190 insn->max = INSN_HW; in register_insn_emulation()
193 insn->current_mode = INSN_UNDEF; in register_insn_emulation()
194 insn->max = INSN_EMULATE; in register_insn_emulation()
199 list_add(&insn->node, &insn_emulation); in register_insn_emulation()
204 update_insn_emulation_mode(insn, INSN_UNDEF); in register_insn_emulation()
212 struct insn_emulation *insn = (struct insn_emulation *) table->data; in emulation_proc_handler() local
213 enum insn_emulation_mode prev_mode = insn->current_mode; in emulation_proc_handler()
215 table->data = &insn->current_mode; in emulation_proc_handler()
218 if (ret || !write || prev_mode == insn->current_mode) in emulation_proc_handler()
221 ret = update_insn_emulation_mode(insn, prev_mode); in emulation_proc_handler()
224 insn->current_mode = prev_mode; in emulation_proc_handler()
225 update_insn_emulation_mode(insn, INSN_UNDEF); in emulation_proc_handler()
228 table->data = insn; in emulation_proc_handler()
244 struct insn_emulation *insn; in register_insn_emulation_sysctl() local
251 list_for_each_entry(insn, &insn_emulation, node) { in register_insn_emulation_sysctl()
257 sysctl->procname = insn->ops->name; in register_insn_emulation_sysctl()
258 sysctl->data = insn; in register_insn_emulation_sysctl()
259 sysctl->extra1 = &insn->min; in register_insn_emulation_sysctl()
260 sysctl->extra2 = &insn->max; in register_insn_emulation_sysctl()
564 char *insn; in compat_setend_handler() local
569 insn = "setend be"; in compat_setend_handler()
572 insn = "setend le"; in compat_setend_handler()
576 trace_instruction_emulation(insn, regs->pc); in compat_setend_handler()