Skip to content

Commit 43bdd48

Browse files
committed
fix(arch/armv8): add explicit casts to fix size_t to uint32_t conversion warnings
The -Werror=conversion flag causes build failures due to implicit narrowing from size_t (64-bit) to uint32_t (32-bit) in smmuv2 and vgicv3 code. Add explicit (uint32_t) casts where the narrowing is intentional and safe. Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
1 parent b182e60 commit 43bdd48

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/arch/armv8/armv8-a/smmuv2.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ void smmu_write_ctxbnk(size_t ctx_id, paddr_t root_pt, asid_t vm_id)
229229
tcr |= SMMUV2_TCR_TG0_4K;
230230
tcr |= SMMUV2_TCR_ORGN0_WB_RA_WA;
231231
tcr |= SMMUV2_TCR_IRGN0_WB_RA_WA;
232-
tcr |= SMMUV2_TCR_T0SZ(t0sz);
232+
tcr |= (uint32_t)SMMUV2_TCR_T0SZ(t0sz);
233233
tcr |= SMMUV2_TCR_SH0_IS;
234234
tcr |= ((parange_table[parange] < 44) ? SMMUV2_TCR_SL0_1 : SMMUV2_TCR_SL0_0);
235235
smmu.hw.cntxt[ctx_id].TCR = tcr;
@@ -338,7 +338,7 @@ void smmu_write_s2c(size_t sme, size_t ctx_id)
338338

339339
s2cr = S2CR_CLEAR(s2cr);
340340
s2cr |= S2CR_DFLT;
341-
s2cr |= ctx_id & S2CR_CBNDX_MASK;
341+
s2cr |= (uint32_t)(ctx_id & S2CR_CBNDX_MASK);
342342

343343
smmu.hw.glbl_rs0->S2CR[sme] = s2cr;
344344
}

src/arch/armv8/vgicv3.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,10 @@ void vgic_init(struct vm* vm, const struct vgic_dscrp* vgic_dscrp)
324324
vm->arch.vgicd.CTLR = 0;
325325
size_t vtyper_itln = vgic_get_itln(vgic_dscrp);
326326
vm->arch.vgicd.int_num = 32 * (vtyper_itln + 1);
327-
vm->arch.vgicd.TYPER = ((vtyper_itln << GICD_TYPER_ITLN_OFF) & GICD_TYPER_ITLN_MSK) |
327+
vm->arch.vgicd.TYPER =
328+
(uint32_t)(((vtyper_itln << GICD_TYPER_ITLN_OFF) & GICD_TYPER_ITLN_MSK) |
328329
(((vm->cpu_num - 1) << GICD_TYPER_CPUNUM_OFF) & GICD_TYPER_CPUNUM_MSK) |
329-
(((10 - 1) << GICD_TYPER_IDBITS_OFF) & GICD_TYPER_IDBITS_MSK);
330+
(((10 - 1) << GICD_TYPER_IDBITS_OFF) & GICD_TYPER_IDBITS_MSK));
330331
vm->arch.vgicd.IIDR = gicd->IIDR;
331332
vm->arch.vgicd.lock = SPINLOCK_INITVAL;
332333

0 commit comments

Comments
 (0)