void arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type) { mutex_lock(&text_mutex); __jump_label_transform(entry, type, NULL, 0); mutex_unlock(&text_mutex); }
void arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type) { get_online_cpus(); mutex_lock(&text_mutex); __jump_label_transform(entry, type, text_poke_smp); mutex_unlock(&text_mutex); put_online_cpus(); }
void arch_jump_label_transform(struct jump_entry *e, enum jump_label_type type) { get_online_cpus(); mutex_lock(&text_mutex); __jump_label_transform(e, type); flush_icache_range(e->code, e->code + sizeof(tilegx_bundle_bits)); mutex_unlock(&text_mutex); put_online_cpus(); }
__init_or_module void arch_jump_label_transform_static(struct jump_entry *entry, enum jump_label_type type) { /* * This function is called at boot up and when modules are * first loaded. Check if the default nop, the one that is * inserted at compile time, is the ideal nop. If it is, then * we do not need to update the nop, and we can leave it as is. * If it is not, then we need to update the nop to the ideal nop. */ if (jlstate == JL_STATE_START) { const unsigned char default_nop[] = { STATIC_KEY_INIT_NOP }; const unsigned char *ideal_nop = ideal_nops[NOP_ATOMIC5]; if (memcmp(ideal_nop, default_nop, 5) != 0) jlstate = JL_STATE_UPDATE; else jlstate = JL_STATE_NO_UPDATE; } if (jlstate == JL_STATE_UPDATE) __jump_label_transform(entry, type, text_poke_early, 1); }
__init_or_module void arch_jump_label_transform_static(struct jump_entry *entry, enum jump_label_type type) { __jump_label_transform(entry, type, text_poke_early); }
__init_or_module void arch_jump_label_transform_static(struct jump_entry *e, enum jump_label_type type) { __jump_label_transform(e, type); }