From 18d4b488f4538f11cfdc618ddfb26eaf2c955fb7 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 12 Jan 2021 05:39:16 -0500 Subject: [PATCH] sim: profile: fix bucketing with 64-bit targets When the target's PC is 64-bits, this shift expands into a range of 8 * 8 - 1 which doesn't work with 32-bit constants. Force it to be a 64-bit value all the time and let the compiler truncate it. --- sim/common/ChangeLog | 4 ++++ sim/common/sim-profile.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index cafb4b20432..dbf030d502f 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,7 @@ +2021-01-30 Mike Frysinger + + * sim-profile.c (profile_pc_init): Change 1 in shifts to 1ULL. + 2021-01-30 Mike Frysinger * sim-hw.c (merge_device_file): Replace fgets with getline. diff --git a/sim/common/sim-profile.c b/sim/common/sim-profile.c index f4ce89f0428..5508f0f516d 100644 --- a/sim/common/sim-profile.c +++ b/sim/common/sim-profile.c @@ -554,7 +554,7 @@ profile_pc_init (SIM_DESC sd) { /* nr_buckets = (full-address-range / 2) / (bucket_size / 2) */ PROFILE_PC_NR_BUCKETS (data) = - ((1 << sizeof (sim_cia) * (8 - 1)) + ((1ULL << sizeof (sim_cia) * (8 - 1)) / (PROFILE_PC_BUCKET_SIZE (data) / 2)); } else @@ -573,7 +573,7 @@ profile_pc_init (SIM_DESC sd) { if (PROFILE_PC_END (data) == 0) /* bucket_size = (full-address-range / 2) / (nr_buckets / 2) */ - bucket_size = ((1 << ((sizeof (sim_cia) * 8) - 1)) + bucket_size = ((1ULL << ((sizeof (sim_cia) * 8) - 1)) / (PROFILE_PC_NR_BUCKETS (data) / 2)); else bucket_size = ((PROFILE_PC_END (data) -- 2.30.2