Lines Matching refs: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 phys = __pa_symbol(addr); in patch_map()
50 struct page *page = vmalloc_to_page(addr); in patch_map()
53 phys = page_to_phys(page) + offset_in_page(addr); in patch_map()
55 return addr; in patch_map()
67 static int __patch_insn_set(void *addr, u8 c, size_t len) in __patch_insn_set() argument
69 bool across_pages = (offset_in_page(addr) + len) > PAGE_SIZE; in __patch_insn_set()
70 void *waddr = addr; in __patch_insn_set()
75 if (len + offset_in_page(addr) > 2 * PAGE_SIZE) in __patch_insn_set()
87 patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); in __patch_insn_set()
89 waddr = patch_map(addr, FIX_TEXT_POKE0); in __patch_insn_set()
112 static int __patch_insn_write(void *addr, const void *insn, size_t len) in __patch_insn_write() argument
114 bool across_pages = (offset_in_page(addr) + len) > PAGE_SIZE; in __patch_insn_write()
115 void *waddr = addr; in __patch_insn_write()
121 if (len + offset_in_page(addr) > 2 * PAGE_SIZE) in __patch_insn_write()
141 patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); in __patch_insn_write()
143 waddr = patch_map(addr, FIX_TEXT_POKE0); in __patch_insn_write()
166 static int __patch_insn_set(void *addr, u8 c, size_t len) in __patch_insn_set() argument
168 memset(addr, c, len); in __patch_insn_set()
174 static int __patch_insn_write(void *addr, const void *insn, size_t len) in __patch_insn_write() argument
176 return copy_to_kernel_nofault(addr, insn, len); in __patch_insn_write()
181 static int patch_insn_set(void *addr, u8 c, size_t len) in patch_insn_set() argument
191 size = min(len, PAGE_SIZE * 2 - offset_in_page(addr)); in patch_insn_set()
192 ret = __patch_insn_set(addr, c, size); in patch_insn_set()
196 addr += size; in patch_insn_set()
204 int patch_text_set_nosync(void *addr, u8 c, size_t len) in patch_text_set_nosync() argument
208 ret = patch_insn_set(addr, c, len); in patch_text_set_nosync()
210 flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len); in patch_text_set_nosync()
216 int patch_insn_write(void *addr, const void *insn, size_t len) in patch_insn_write() argument
226 size = min(len, PAGE_SIZE * 2 - offset_in_page(addr)); in patch_insn_write()
227 ret = __patch_insn_write(addr, insn, size); in patch_insn_write()
231 addr += size; in patch_insn_write()
240 int patch_text_nosync(void *addr, const void *insns, size_t len) in patch_text_nosync() argument
244 ret = patch_insn_write(addr, insns, len); in patch_text_nosync()
246 flush_icache_range((uintptr_t)addr, (uintptr_t)addr + len); in patch_text_nosync()
258 ret = patch_insn_write(patch->addr, patch->insns, patch->len); in patch_text_cb()
278 int patch_text(void *addr, u32 *insns, size_t len) in patch_text() argument
282 .addr = addr, in patch_text()