aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRasmus Villemoes <linux@rasmusvillemoes.dk>2015-01-16 09:39:56 -0500
committerRoland Dreier <roland@purestorage.com>2015-02-18 11:31:06 -0500
commitf3070e7efdc37a84fa63cbe84ac4febc87440121 (patch)
tree95ca4251d6c867bb977203f4eaab3185b5a115a3
parentba64fdca63af5a1bdda8e33d9cc8496089631dde (diff)
RDMA/ocrdma: Use unsigned for bit index
In the expressions idx/32 and idx%32, both idx and 32 have signed type, and unfortunately the C standard prescribes rounding to 0, so unless gcc can prove that idx is non-negative, these cannot be implemented as simple shift respectively mask operations. Help gcc by changing the type of idx to unsigned - this cuts another few instructions from the generated code. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Acked-by: Selvin Xavier <selvin.xavier@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_verbs.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index c1e9f9617ab9..397a3678ecfb 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -1586,10 +1586,10 @@ mbx_err:
1586 return status; 1586 return status;
1587} 1587}
1588 1588
1589static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, int idx) 1589static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, unsigned int idx)
1590{ 1590{
1591 int i = idx / 32; 1591 unsigned int i = idx / 32;
1592 unsigned int mask = (1 << (idx % 32)); 1592 u32 mask = (1U << (idx % 32));
1593 1593
1594 srq->idx_bit_fields[i] ^= mask; 1594 srq->idx_bit_fields[i] ^= mask;
1595} 1595}