system/physmem: Un-inline cpu_physical_memory_set_dirty_flag()
Avoid maintaining large functions in header, rely on the linker to optimize at linking time. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20251001175448.18933-11-philmd@linaro.org>
This commit is contained in:
parent
84a8e6399b
commit
62c889eb7d
2 changed files with 19 additions and 18 deletions
|
|
@ -150,24 +150,7 @@ uint8_t cpu_physical_memory_range_includes_clean(ram_addr_t start,
|
|||
ram_addr_t length,
|
||||
uint8_t mask);
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty_flag(ram_addr_t addr,
|
||||
unsigned client)
|
||||
{
|
||||
unsigned long page, idx, offset;
|
||||
DirtyMemoryBlocks *blocks;
|
||||
|
||||
assert(client < DIRTY_MEMORY_NUM);
|
||||
|
||||
page = addr >> TARGET_PAGE_BITS;
|
||||
idx = page / DIRTY_MEMORY_BLOCK_SIZE;
|
||||
offset = page % DIRTY_MEMORY_BLOCK_SIZE;
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
|
||||
blocks = qatomic_rcu_read(&ram_list.dirty_memory[client]);
|
||||
|
||||
set_bit_atomic(offset, blocks->blocks[idx]);
|
||||
}
|
||||
void cpu_physical_memory_set_dirty_flag(ram_addr_t addr, unsigned client);
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty_range(ram_addr_t start,
|
||||
ram_addr_t length,
|
||||
|
|
|
|||
|
|
@ -1012,6 +1012,24 @@ uint8_t cpu_physical_memory_range_includes_clean(ram_addr_t start,
|
|||
return ret;
|
||||
}
|
||||
|
||||
void cpu_physical_memory_set_dirty_flag(ram_addr_t addr, unsigned client)
|
||||
{
|
||||
unsigned long page, idx, offset;
|
||||
DirtyMemoryBlocks *blocks;
|
||||
|
||||
assert(client < DIRTY_MEMORY_NUM);
|
||||
|
||||
page = addr >> TARGET_PAGE_BITS;
|
||||
idx = page / DIRTY_MEMORY_BLOCK_SIZE;
|
||||
offset = page % DIRTY_MEMORY_BLOCK_SIZE;
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
|
||||
blocks = qatomic_rcu_read(&ram_list.dirty_memory[client]);
|
||||
|
||||
set_bit_atomic(offset, blocks->blocks[idx]);
|
||||
}
|
||||
|
||||
/* Note: start and end must be within the same ram block. */
|
||||
bool cpu_physical_memory_test_and_clear_dirty(ram_addr_t start,
|
||||
ram_addr_t length,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue