Lines Matching refs:insn
90 struct insn_emulation *insn = (struct insn_emulation *)data; in enable_insn_hw_mode() local
91 if (insn->ops->set_hw_mode) in enable_insn_hw_mode()
92 insn->ops->set_hw_mode(true); in enable_insn_hw_mode()
97 struct insn_emulation *insn = (struct insn_emulation *)data; in disable_insn_hw_mode() local
98 if (insn->ops->set_hw_mode) in disable_insn_hw_mode()
99 insn->ops->set_hw_mode(false); in disable_insn_hw_mode()
103 static int run_all_cpu_set_hw_mode(struct insn_emulation *insn, bool enable) in run_all_cpu_set_hw_mode() argument
105 if (!insn->ops->set_hw_mode) in run_all_cpu_set_hw_mode()
108 on_each_cpu(enable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
110 on_each_cpu(disable_insn_hw_mode, (void *)insn, true); in run_all_cpu_set_hw_mode()
124 struct insn_emulation *insn; in run_all_insn_set_hw_mode() local
127 list_for_each_entry(insn, &insn_emulation, node) { in run_all_insn_set_hw_mode()
128 bool enable = (insn->current_mode == INSN_HW); in run_all_insn_set_hw_mode()
129 if (insn->ops->set_hw_mode && insn->ops->set_hw_mode(enable)) { in run_all_insn_set_hw_mode()
131 cpu, insn->ops->name); in run_all_insn_set_hw_mode()
139 static int update_insn_emulation_mode(struct insn_emulation *insn, in update_insn_emulation_mode() argument
148 remove_emulation_hooks(insn->ops); in update_insn_emulation_mode()
151 if (!run_all_cpu_set_hw_mode(insn, false)) in update_insn_emulation_mode()
152 pr_notice("Disabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
156 switch (insn->current_mode) { in update_insn_emulation_mode()
160 register_emulation_hooks(insn->ops); in update_insn_emulation_mode()
163 ret = run_all_cpu_set_hw_mode(insn, true); in update_insn_emulation_mode()
165 pr_notice("Enabled %s support\n", insn->ops->name); in update_insn_emulation_mode()
175 struct insn_emulation *insn; in register_insn_emulation() local
177 insn = kzalloc(sizeof(*insn), GFP_KERNEL); in register_insn_emulation()
178 if (!insn) in register_insn_emulation()
181 insn->ops = ops; in register_insn_emulation()
182 insn->min = INSN_UNDEF; in register_insn_emulation()
186 insn->current_mode = INSN_EMULATE; in register_insn_emulation()
188 run_all_cpu_set_hw_mode(insn, false); in register_insn_emulation()
189 insn->max = INSN_HW; in register_insn_emulation()
192 insn->current_mode = INSN_UNDEF; in register_insn_emulation()
193 insn->max = INSN_EMULATE; in register_insn_emulation()
198 list_add(&insn->node, &insn_emulation); in register_insn_emulation()
203 update_insn_emulation_mode(insn, INSN_UNDEF); in register_insn_emulation()
211 struct insn_emulation *insn = container_of(table->data, struct insn_emulation, current_mode); in emulation_proc_handler() local
212 enum insn_emulation_mode prev_mode = insn->current_mode; in emulation_proc_handler()
217 if (ret || !write || prev_mode == insn->current_mode) in emulation_proc_handler()
220 ret = update_insn_emulation_mode(insn, prev_mode); in emulation_proc_handler()
223 insn->current_mode = prev_mode; in emulation_proc_handler()
224 update_insn_emulation_mode(insn, INSN_UNDEF); in emulation_proc_handler()
235 struct insn_emulation *insn; in register_insn_emulation_sysctl() local
244 list_for_each_entry(insn, &insn_emulation, node) { in register_insn_emulation_sysctl()
250 sysctl->procname = insn->ops->name; in register_insn_emulation_sysctl()
251 sysctl->data = &insn->current_mode; in register_insn_emulation_sysctl()
252 sysctl->extra1 = &insn->min; in register_insn_emulation_sysctl()
253 sysctl->extra2 = &insn->max; in register_insn_emulation_sysctl()
556 char *insn; in compat_setend_handler() local
561 insn = "setend be"; in compat_setend_handler()
564 insn = "setend le"; in compat_setend_handler()
568 trace_instruction_emulation(insn, regs->pc); in compat_setend_handler()