From 083cc3ae024d337ff648f0bb26d5c8730fd569c7 Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Fri, 26 Apr 2024 10:14:47 +0200 Subject: pkg/ifuzz/arm64: explicitly use uint32 for immediates This should fix compile-time errors with GOARCH=386 --- pkg/ifuzz/arm64/pseudo.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'pkg') diff --git a/pkg/ifuzz/arm64/pseudo.go b/pkg/ifuzz/arm64/pseudo.go index a99842515..b906fefad 100644 --- a/pkg/ifuzz/arm64/pseudo.go +++ b/pkg/ifuzz/arm64/pseudo.go @@ -36,31 +36,32 @@ func makeGen(cfg *iset.Config, r *rand.Rand) *generator { } func (gen *generator) smcccHvc() { - cmd := (1 << 31) | (gen.r.Intn(2) << 30) | ((gen.r.Intn(8) & 0x3F) << 24) | (gen.r.Intn(0x10000) & 0xFFFF) + cmd := (uint32(1) << 31) | (uint32(gen.r.Intn(2)) << 30) | + (uint32(gen.r.Intn(8)&0x3F) << 24) | (uint32(gen.r.Intn(0x10000)) & 0xFFFF) gen.movRegImm32(0, cmd) - gen.movRegImm16(1, gen.r.Intn(16)) - gen.movRegImm16(2, gen.r.Intn(16)) - gen.movRegImm16(3, gen.r.Intn(16)) - gen.movRegImm16(4, gen.r.Intn(16)) + gen.movRegImm16(1, uint32(gen.r.Intn(16))) + gen.movRegImm16(2, uint32(gen.r.Intn(16))) + gen.movRegImm16(3, uint32(gen.r.Intn(16))) + gen.movRegImm16(4, uint32(gen.r.Intn(16))) gen.byte(0x02, 0x00, 0x00, 0xd4) } -func (gen *generator) movRegImm32(reg, imm int) { +func (gen *generator) movRegImm32(reg, imm uint32) { gen.movRegImm16(reg, imm) // Encoding `movk reg, imm16, LSL #16`. upper := (imm >> 16) & 0xffff opcode := uint32(0xf2a00000) - opcode |= uint32(upper) << 5 - opcode |= uint32(reg & 0xf) + opcode |= upper << 5 + opcode |= reg & 0xf gen.imm32(opcode) } -func (gen *generator) movRegImm16(reg, imm int) { +func (gen *generator) movRegImm16(reg, imm uint32) { // Encoding `mov reg, imm16`. imm = imm & 0xffff opcode := uint32(0xd2800000) - opcode |= uint32(imm) << 5 - opcode |= uint32(reg & 0xf) + opcode |= imm << 5 + opcode |= reg & 0xf gen.imm32(opcode) } -- cgit mrf-deployment