Lines Matching full:addr
20 void *addr; member
30 static inline bool is_kernel_exittext(uintptr_t addr) in is_kernel_exittext() argument
33 addr >= (uintptr_t)__exittext_begin && in is_kernel_exittext()
34 addr < (uintptr_t)__exittext_end; in is_kernel_exittext()
42 static __always_inline void *patch_map(void *addr, const unsigned int fixmap) in patch_map() argument
44 uintptr_t uintaddr = (uintptr_t) addr; in patch_map()
48 page = phys_to_page(__pa_symbol(addr)); in patch_map()
50 page = vmalloc_to_page(addr); in patch_map()
52 return addr; in patch_map()
57 offset_in_page(addr)); in patch_map()
66 static int __patch_insn_set(void *addr, u8 c, size_t len) in __patch_insn_set() argument
68 bool across_pages = (offset_in_page(addr) + len) > PAGE_SIZE; in __patch_insn_set()
69 void *waddr = addr; in __patch_insn_set()
74 if (len + offset_in_page(addr) > 2 * PAGE_SIZE) in __patch_insn_set()
86 patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); in __patch_insn_set()
88 waddr = patch_map(addr, FIX_TEXT_POKE0); in __patch_insn_set()
111 static int __patch_insn_write(void *addr, const void *insn, size_t len) in __patch_insn_write() argument
113 bool across_pages = (offset_in_page(addr) + len) > PAGE_SIZE; in __patch_insn_write()
114 void *waddr = addr; in __patch_insn_write()
120 if (len + offset_in_page(addr) > 2 * PAGE_SIZE) in __patch_insn_write()
140 patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); in __patch_insn_write()
142 waddr = patch_map(addr, FIX_TEXT_POKE0); in __patch_insn_write()
165 static int __patch_insn_set(void *addr, u8 c, size_t len) in __patch_insn_set() argument
167 memset(addr, c, len); in __patch_insn_set()
173 static int __patch_insn_write(void *addr, const void *insn, size_t len) in __patch_insn_write() argument
175 return copy_to_kernel_nofault(addr, insn, len); in __patch_insn_write()
180 static int patch_insn_set(void *addr, u8 c, size_t len) in patch_insn_set() argument
190 size = min(len, PAGE_SIZE * 2 - offset_in_page(addr)); in patch_insn_set()
191 ret = __patch_insn_set(addr, c, size); in patch_insn_set()
195 addr += size; in patch_insn_set()
203 int patch_text_set_nosync(void *addr, u8 c, size_t len) in patch_text_set_nosync() argument
207 ret = patch_insn_set(addr, c, len); in patch_text_set_nosync()
209 flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len); in patch_text_set_nosync()
215 int patch_insn_write(void *addr, const void *insn, size_t len) in patch_insn_write() argument
225 size = min(len, PAGE_SIZE * 2 - offset_in_page(addr)); in patch_insn_write()
226 ret = __patch_insn_write(addr, insn, size); in patch_insn_write()
230 addr += size; in patch_insn_write()
239 int patch_text_nosync(void *addr, const void *insns, size_t len) in patch_text_nosync() argument
243 ret = patch_insn_write(addr, insns, len); in patch_text_nosync()
245 flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len); in patch_text_nosync()
257 ret = patch_insn_write(patch->addr, patch->insns, patch->len); in patch_text_cb()
277 int patch_text(void *addr, u32 *insns, size_t len) in patch_text() argument
281 .addr = addr, in patch_text()