diff mbox series

[PATCH-for-10.1] accel/tcg: Extract range_within_page() helper

Message ID 20250323225346.35708-1-philmd@linaro.org
State New
Headers show
Series [PATCH-for-10.1] accel/tcg: Extract range_within_page() helper | expand

Commit Message

Philippe Mathieu-Daudé March 23, 2025, 10:53 p.m. UTC
To ease code review, factor range_within_page() out.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 accel/tcg/cputlb.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Richard Henderson March 24, 2025, 5:05 p.m. UTC | #1
On 3/23/25 15:53, Philippe Mathieu-Daudé wrote:
> @@ -772,7 +777,7 @@ void tlb_flush_range_by_mmuidx(CPUState *cpu, vaddr addr,
>        * If all bits are significant, and len is small,
>        * this devolves to tlb_flush_page.
>        */
> -    if (bits >= TARGET_LONG_BITS && len <= TARGET_PAGE_SIZE) {
> +    if (range_within_page(cpu, bits, len)) {
>           tlb_flush_page_by_mmuidx(cpu, addr, idxmap);
>           return;
>       }
> @@ -810,7 +815,7 @@ void tlb_flush_range_by_mmuidx_all_cpus_synced(CPUState *src_cpu,
>        * If all bits are significant, and len is small,
>        * this devolves to tlb_flush_page.
>        */
> -    if (bits >= TARGET_LONG_BITS && len <= TARGET_PAGE_SIZE) {
> +    if (range_within_page(src_cpu, bits, len)) {
>           tlb_flush_page_by_mmuidx_all_cpus_synced(src_cpu, addr, idxmap);
>           return;
>       }

Better would be to swap the two if's in these functions:

	if (bits < TARGET_LONG_BITS) {
	}
	if (len <= TARGET_PAGE_SIZE) {
	}

at which point you don't need a helper to simplify.


r~
diff mbox series

Patch

diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index b6713efdb81..91d185021a4 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -657,6 +657,11 @@  void tlb_flush_page_all_cpus_synced(CPUState *src, vaddr addr)
     tlb_flush_page_by_mmuidx_all_cpus_synced(src, addr, ALL_MMUIDX_BITS);
 }
 
+static bool range_within_page(const CPUState *cpu, unsigned bits, vaddr len)
+{
+    return bits >= TARGET_LONG_BITS && len <= TARGET_PAGE_SIZE;
+}
+
 static void tlb_flush_range_locked(CPUState *cpu, int midx,
                                    vaddr addr, vaddr len,
                                    unsigned bits)
@@ -772,7 +777,7 @@  void tlb_flush_range_by_mmuidx(CPUState *cpu, vaddr addr,
      * If all bits are significant, and len is small,
      * this devolves to tlb_flush_page.
      */
-    if (bits >= TARGET_LONG_BITS && len <= TARGET_PAGE_SIZE) {
+    if (range_within_page(cpu, bits, len)) {
         tlb_flush_page_by_mmuidx(cpu, addr, idxmap);
         return;
     }
@@ -810,7 +815,7 @@  void tlb_flush_range_by_mmuidx_all_cpus_synced(CPUState *src_cpu,
      * If all bits are significant, and len is small,
      * this devolves to tlb_flush_page.
      */
-    if (bits >= TARGET_LONG_BITS && len <= TARGET_PAGE_SIZE) {
+    if (range_within_page(src_cpu, bits, len)) {
         tlb_flush_page_by_mmuidx_all_cpus_synced(src_cpu, addr, idxmap);
         return;
     }