/* Make sure we don't have any aliases in cache */
flush_kernel_dcache_range_asm(start, end);
flush_kernel_icache_range_asm(start, end);
flush_tlb_kernel_range(start, end);
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags, &mapped);
while (len >= 4) {
*p++ = *insn++;
addr += sizeof(u32);
len -= sizeof(u32); if (len && offset_in_page(addr) == 0) { /* * We're crossing a page boundary, so * need to remap
*/
flush_kernel_dcache_range_asm((unsignedlong)fixmap,
(unsignedlong)p);
flush_tlb_kernel_range((unsignedlong)fixmap,
(unsignedlong)p); if (mapped)
patch_unmap(FIX_TEXT_POKE0, &flags);
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags,
&mapped);
}
}
flush_kernel_dcache_range_asm((unsignedlong)fixmap, (unsignedlong)p);
flush_tlb_kernel_range((unsignedlong)fixmap, (unsignedlong)p); if (mapped)
patch_unmap(FIX_TEXT_POKE0, &flags);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.