lib: sbi: separate the swap operation of domain region
authorInochi Amaoto <inochiama@outlook.com>
Thu, 16 Nov 2023 10:49:38 +0000 (18:49 +0800)
committerAnup Patel <anup@brainfault.org>
Thu, 16 Nov 2023 15:28:56 +0000 (20:58 +0530)
Swapping domain region is a common operation when sorting domain region,
so separate it as a function to make code clean.

Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
lib/sbi/sbi_domain.c

index 4d248d0b03b8be639cf9d920081f6b95528ad128..71cb381ff6b395335caba128a30094439d15291b 100644 (file)
@@ -256,10 +256,20 @@ static const struct sbi_domain_memregion *find_next_subset_region(
        return ret;
 }
 
+static void swap_region(struct sbi_domain_memregion* reg1,
+                       struct sbi_domain_memregion* reg2)
+{
+       struct sbi_domain_memregion treg;
+
+       sbi_memcpy(&treg, reg1, sizeof(treg));
+       sbi_memcpy(reg1, reg2, sizeof(treg));
+       sbi_memcpy(reg2, &treg, sizeof(treg));
+}
+
 static int sanitize_domain(struct sbi_domain *dom)
 {
        u32 i, j, count;
-       struct sbi_domain_memregion treg, *reg, *reg1;
+       struct sbi_domain_memregion *reg, *reg1;
 
        /* Check possible HARTs */
        if (!dom->possible_harts) {
@@ -323,9 +333,7 @@ static int sanitize_domain(struct sbi_domain *dom)
                        if (!is_region_before(reg1, reg))
                                continue;
 
-                       sbi_memcpy(&treg, reg1, sizeof(treg));
-                       sbi_memcpy(reg1, reg, sizeof(treg));
-                       sbi_memcpy(reg, &treg, sizeof(treg));
+                       swap_region(reg, reg1);
                }
        }