From 9edac0479d562a5cb62b57961ad6288d0537e9f1 Mon Sep 17 00:00:00 2001 From: David Cunado Date: Thu, 19 Jan 2017 10:26:16 +0000 Subject: Resolve build errors flagged by GCC 6.2 With GCC 6.2 compiler, more C undefined behaviour is being flagged as warnings, which result in build errors in ARM TF build. The specific issue that this patch resolves is the use of (1 << 31), which is predominantly used in case statements, where 1 is represented as a signed int. When shifted to msb the behaviour is undefined. The resolution is to specify 1 as an unsigned int using a convenience macro ULL(). A duplicate macro MAKE_ULL() is replaced. Fixes ARM-software/tf-issues#438 Change-Id: I08e3053bbcf4c022ee2be33a75bd0056da4073e1 Signed-off-by: David Cunado --- services/spd/trusty/smcall.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'services') diff --git a/services/spd/trusty/smcall.h b/services/spd/trusty/smcall.h index 7e876c894..a1d91e5af 100644 --- a/services/spd/trusty/smcall.h +++ b/services/spd/trusty/smcall.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -40,11 +40,12 @@ #define SMC_ENTITY(smc_nr) (((smc_nr) & 0x3F000000) >> 24) #define SMC_FUNCTION(smc_nr) ((smc_nr) & 0x0000FFFF) -#define SMC_NR(entity, fn, fastcall, smc64) ((((fastcall) & 0x1) << 31) | \ - (((smc64) & 0x1) << 30) | \ - (((entity) & 0x3F) << 24) | \ - ((fn) & 0xFFFF) \ - ) +#define SMC_NR(entity, fn, fastcall, smc64) \ + (((((unsigned int) (fastcall)) & 0x1) << 31) | \ + (((smc64) & 0x1) << 30) | \ + (((entity) & 0x3F) << 24) | \ + ((fn) & 0xFFFF) \ + ) #define SMC_FASTCALL_NR(entity, fn) SMC_NR((entity), (fn), 1, 0) #define SMC_STDCALL_NR(entity, fn) SMC_NR((entity), (fn), 0, 0) -- cgit v1.2.3