mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
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>
This commit is contained in:
parent
ba64fdca63
commit
f3070e7efd
@ -1586,10 +1586,10 @@ mbx_err:
|
||||
return status;
|
||||
}
|
||||
|
||||
static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, int idx)
|
||||
static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, unsigned int idx)
|
||||
{
|
||||
int i = idx / 32;
|
||||
unsigned int mask = (1 << (idx % 32));
|
||||
unsigned int i = idx / 32;
|
||||
u32 mask = (1U << (idx % 32));
|
||||
|
||||
srq->idx_bit_fields[i] ^= mask;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user